moving an animation with keyboard
| Author |
Message |
Insectoid

|
Posted: Mon Apr 28, 2008 6:16 pm Post subject: moving an animation with keyboard |
|
|
I am trying to write a simple program for my self-learning where there is a pacman (Very original, no?) whose mouth opens and closes while you move him about the screen.
However, currently, he does not move. I know why, just, not how to fix it. Note-This is my first time trying out procedures, so no things like "Dude, that's not even close to how procedures work" or any similar things.
And without further ado, Code!
| Turing: |
var x : int := 100
var y : int := 100
var chars : array char of boolean
procedure pacman
var anglex : int := 135
var angley : int := 225
loop
loop
exit when anglex = 180
Draw.FillOval (x, y, 10, 10, yellow)
Draw.FillArc (x, y, 10, 10, anglex, angley, white)
anglex := anglex + 1
angley := angley - 1
delay (20)
end loop
loop
exit when anglex = 135 and angley = 225
Draw.FillOval (x, y, 10, 10, yellow)
Draw.FillArc (y, x, 10, 10, anglex, angley, white)
anglex := anglex - 1
angley := angley + 1
delay (20)
end loop
end loop
end pacman
loop
Input.KeyDown (chars )
if chars (KEY_UP_ARROW) and y < 390 then
y := y + 5
end if
if chars (KEY_DOWN_ARROW) and y > 10 then
y := y - 5
end if
if chars (KEY_RIGHT_ARROW) and x < 630 then
x := x + 5
end if
if chars (KEY_LEFT_ARROW) and x > 10 then
x := x - 5
end if
delay (1)
cls
pacman
end loop
|
|
|
|
|
|
 |
Sponsor Sponsor

|
|
 |
CodeMonkey2000
|
Posted: Mon Apr 28, 2008 6:23 pm Post subject: RE:moving an animation with keyboard |
|
|
| Look carefully at your program flow.... |
|
|
|
|
 |
Insectoid

|
Posted: Mon Apr 28, 2008 6:28 pm Post subject: RE:moving an animation with keyboard |
|
|
| Yes, I know it will loop pacman indefinitley. I don't know how to 'fork' a procedure (The whole 'this for 1 frame, that for the next frame' thing) so, to enhance my learning, please explain how this works. |
|
|
|
|
 |
CodeMonkey2000
|
Posted: Mon Apr 28, 2008 6:48 pm Post subject: RE:moving an animation with keyboard |
|
|
| You shouldn't have all those nested loops for the animation, since in those loops you aren't checking for input. |
|
|
|
|
 |
Insectoid

|
Posted: Mon Apr 28, 2008 6:56 pm Post subject: RE:moving an animation with keyboard |
|
|
Well, to make the animation work, I have to!
But I see where your going with this and have an Idea about how to maybe make it work... |
|
|
|
|
 |
Insectoid

|
Posted: Mon Apr 28, 2008 6:57 pm Post subject: RE:moving an animation with keyboard |
|
|
| wait, never mind! It won't work |
|
|
|
|
 |
CodeMonkey2000
|
Posted: Mon Apr 28, 2008 7:40 pm Post subject: RE:moving an animation with keyboard |
|
|
Sigh...you should be doing frame by frame animation. remember what pacman looks like at each frame.
| code: |
var x : int := 100
var y : int := 100
var chars : array char of boolean
var anglex : int := 135
var angley : int := 225
var tmp : boolean := true
procedure pacman
if tmp then
%exit when anglex = 180
Draw.FillOval (x, y, 10, 10, yellow)
Draw.FillArc (x, y, 10, 10, anglex, angley, white)
anglex := anglex + 1
angley := angley - 1
delay (20)
if anglex = 180 then
tmp := false
end if
else
%exit when anglex = 135 and angley = 225
Draw.FillOval (x, y, 10, 10, yellow)
Draw.FillArc (y, x, 10, 10, anglex, angley, white)
anglex := anglex - 1
angley := angley + 1
delay (20)
if anglex = 135 and angley = 225 then
tmp := true
end if
end if
end pacman
loop
Input.KeyDown (chars)
if chars (KEY_UP_ARROW) and y < 390 then
y := y + 5
end if
if chars (KEY_DOWN_ARROW) and y > 10 then
y := y - 5
end if
if chars (KEY_RIGHT_ARROW) and x < 630 then
x := x + 5
end if
if chars (KEY_LEFT_ARROW) and x > 10 then
x := x - 5
end if
delay (1)
cls
pacman
end loop
|
|
|
|
|
|
 |
Insectoid

|
Posted: Mon Apr 28, 2008 7:59 pm Post subject: RE:moving an animation with keyboard |
|
|
| Yes, well, We haven't been taught boolean yet, and by the way my teacher's going, I'll have to find out for myself. |
|
|
|
|
 |
Sponsor Sponsor

|
|
 |
Insectoid

|
Posted: Mon Apr 28, 2008 8:05 pm Post subject: RE:moving an animation with keyboard |
|
|
| Found a glitch in your code. After you move Mr. Pacman, The mouth doesn't open smoothly anymore. it's instant. It closes fine, though. |
|
|
|
|
 |
CodeMonkey2000
|
Posted: Mon Apr 28, 2008 8:13 pm Post subject: RE:moving an animation with keyboard |
|
|
Meh I don't really care . And you should be using pictures anyway, it's much easier and it looks nicer. I think it might be faster too, but I'm not sure. And there's not much to know about boolean types. It just holds true/false. If you want you can just use an integer and use 0 for false and 1 for true. |
|
|
|
|
 |
|
|