Animation
Author |
Message |
bucky-lady
|
Posted: Sat Jan 06, 2007 6:00 pm Post subject: Animation |
|
|
How do you make the little blue box not go outside the size of the screen or distort ?
thank you for your help.
Code :
% Declaration Section
var startpointx, startpointy : int := 0
var endpointx, endpointy : int := 50
var key : string (1)
% set screen mode and size
setscreen ("graphics : 400;400 ")
setscreen ("noecho")
setscreen ("nocursor")
setscreen ("offscreenonly")
procedure display
drawfillbox (startpointx, startpointy, endpointx, endpointy, white)
drawfillbox (startpointx + 1, startpointy + 1, endpointx - 1, endpointy - 1, blue)
getch (key)
if key = chr (200) then
startpointy := startpointy + 1
endpointy := endpointy + 1
elsif key = chr (208) then
startpointy := startpointy - 1
endpointy := endpointy - 1
elsif key = chr (205) then
startpointx := startpointx + 1
endpointx := endpointx + 1
else
if key = chr (203) then
startpointx := startpointx - 1
endpointx := endpointx - 1
end if
end if
View.Update
end display
% Main program
loop
display
exit when key = chr (27)
end loop |
|
|
|
|
|
Sponsor Sponsor
|
|
|
Prince Pwn
|
Posted: Sat Jan 06, 2007 6:31 pm Post subject: (No subject) |
|
|
I did a bit of cleaning of your code, and in comments I put how you figure out of your box is off screen. I don't see your box distorting at all. And when you post any of your code, do: code: | [code]PLACE CODE HERE[/code] |
code: |
% Declaration Section
var startpointx, startpointy : int := 0
var keys : array char of boolean
% set screen mode and size
setscreen ("graphics : 400;400 ")
setscreen ("noecho")
setscreen ("nocursor")
setscreen ("offscreenonly")
procedure display
drawfillbox (startpointx, startpointy, startpointx + 50, startpointy + 50, blue)
Input.KeyDown (keys)
if keys (chr (200)) then
startpointy := startpointy + 1
elsif keys (chr (208)) then
startpointy := startpointy - 1
elsif keys (chr (205)) then
startpointx := startpointx + 1
elsif keys (chr (203)) then
startpointx := startpointx - 1
end if
View.Update
cls
%if the x is equal or less than 0 then increase x
%if the x axis plus the radius is greater than the max x then decrease x
%if the y is equal or less than 0 then increase y
%if the y axis plus the radius is greater than the max y then decrease y
end display
% Main program
loop
display
exit when keys (chr (27))
end loop
|
|
|
|
|
|
|
Prince Pwn
|
Posted: Sat Jan 06, 2007 6:33 pm Post subject: (No subject) |
|
|
Also, F2 indents your code. Best do that before posting the code here, makes it clean =D |
|
|
|
|
|
neufelni
|
Posted: Sat Jan 06, 2007 6:49 pm Post subject: (No subject) |
|
|
Several things that you should change:
1. Combine all of your setscreens into one:
code: | setscreen ("graphics:400;400, noecho, nocursor, offscreenonly") |
2. You don't need the endpoint variables, just change your drawfillbox to this:
code: | drawfillbox (x, y, x + 50, y + 50, blue) |
3. You just need to add an extra condition to each of your if statements so that you can't move left if startpointx = 0, move right if endpointx = maxx, move down if startpointy = 0, or move up if endpointy = maxy.
4. Use code tags.
Here is your code with those changes and a few others.
code: | % Declaration Section
var x, y : int := 0
var key : string (1)
% set screen mode and size
setscreen ("graphics:400;400, noecho, nocursor, offscreenonly")
procedure display
drawfillbox (x, y, x + 50, y + 50, blue)
getch (key)
if key = chr (200) and y + 50 not= maxy then
y := y + 1
elsif key = chr (208) and y not= 0 then
y := y - 1
elsif key = chr (205) and x + 50 not= maxx then
x := x + 1
elsif key = chr (203) and x not= 0 then
x := x - 1
end if
View.Update
cls
end display
% Main program
loop
display
exit when key = chr (27)
end loop
|
|
|
|
|
|
|
bucky-lady
|
Posted: Wed Jan 10, 2007 5:17 pm Post subject: RE:Animation |
|
|
thank you |
|
|
|
|
|
|
|