Delay help
Author |
Message |
Ldomi
|
Posted: Tue Jan 09, 2007 7:20 pm Post subject: Delay help |
|
|
I made a racing game where if you or the computer goes in a puddle of mud, your car slows down. My problem is that when the computer's car goes in the mud, it makes the other car slow even though it is not on the mud. How do i make only the car that goes in the mud slow down and not the other car that avoided the mud.
This is the part im having problems with:
code: | loop
exit when GUI.ProcessEvent
drawfillbox (startpointx + 1, 70, 0, 300, gray)
drawfillbox (0, startpointy - 1, 760, 300, gray)
drawfillbox (0, startpointy + 1, 760, 70, gray)
drawfilloval (390, 190, 100, 50, 114)
drawfilloval (390, 405, 100, 50, 114)
Pic.Draw (pictureP1, startpointx + 1, startpointy + 1, 0)
drawfillbox (startpointx2 + 1, 400 + 1, 0 + 1, 450 + 1, gray)
Input.KeyDown (key)
if key ('M') or key ('m') then
mainMenu
end if
if key (KEY_UP_ARROW) and endpointy <= 80 then
startpointy := startpointy + 10
endpointy := endpointy + 10
elsif key (KEY_DOWN_ARROW) and startpointy >= 85 then
startpointy := startpointy - 10
endpointy := endpointy - 10
elsif key (KEY_RIGHT_ARROW) and endpointx <= 630 then
startpointx := startpointx + 10
endpointx := endpointx + 10
if startpointx > 168 and startpointx < 450 and startpointy > 130 and startpointy < 220 then
startpointx := startpointx + 10
delay (30)
end if
else
if key (KEY_LEFT_ARROW) and startpointx >= 1 then
startpointx := startpointx - 10
endpointx := endpointx - 10
end if
end if
drawfilloval (390, 405, 100, 50, 114)
Pic.Draw (pictureComp, startpointx2, startpointy2, 0)
startpointx2 := startpointx2 + 8
delay (2)
if startpointx2 > 168 and startpointx2 < 450 and startpointy2 > 360 and startpointy2 < 450 then
%or startpointx >168 and startpointx <450 and startpointy >160 and startpointy <250 then
startpointx2 := startpointx2 + 8
delay (30)
else
end if |
|
|
|
|
|
![](images/spacer.gif) |
Sponsor Sponsor
![Sponsor Sponsor](templates/subSilver/images/ranks/stars_rank5.gif)
|
|
![](images/spacer.gif) |
Clayton
![](http://compsci.ca/v3/uploads/user_avatars/1718239683472e5c8d7e617.jpg)
|
Posted: Tue Jan 09, 2007 7:47 pm Post subject: Re: Delay help |
|
|
Instead of using a delay() which slows down the entire program, have a velocity variable, and lower the velocity when you go through the puddle |
|
|
|
|
![](images/spacer.gif) |
ericfourfour
|
Posted: Tue Jan 09, 2007 7:53 pm Post subject: Re: Delay help |
|
|
Instead of delaying the program, give each player a speed, speed effect, and total speed variable. The speed is the amount of pixels the player should move every frame. The speed effect is an effect on the speed that either increases or decreases it. The total speed is the actual amount of pixels the player moves every frame.
Turing: | var speed : real
var speedEffect : real
var totalSpeed : real
loop
...
if speed changed then
totalSpeed := speed + speedEffect
end if
...
end loop |
|
|
|
|
|
![](images/spacer.gif) |
Ldomi
|
Posted: Thu Jan 11, 2007 9:41 pm Post subject: Re: Delay help |
|
|
ericfourfour wrote:
Turing: | var speed : real
var speedEffect : real
var totalSpeed : real
loop
...
if speed changed then
totalSpeed := speed + speedEffect
end if
...
end loop |
What's the "..."? |
|
|
|
|
![](images/spacer.gif) |
Ultrahex
|
Posted: Thu Jan 11, 2007 11:10 pm Post subject: Re: Delay help |
|
|
Basically what he is saying is you need to have speeds on your vechiles say you are moving at a rate of 2m/s on road, and 1m/s on dirt
then you would set the current velocity to whatever one its on. so you need a set of data for each car saying its speed and you need to move it by that speed.
code: | var speed : int := 5
var chars : array char of boolean
var x : int := 50
View.Set ("offscreenonly")
loop
cls
drawfillbox (200, 0, maxx, maxy, brown)
drawfilloval (x, 200, 5, 5, blue)
Input.KeyDown (chars)
if x > 200 then
speed := 1
else
speed := 5
end if
x += speed
if x > 400 then
x := 50
end if
delay (20)
View.Update
end loop |
|
|
|
|
|
![](images/spacer.gif) |
Clayton
![](http://compsci.ca/v3/uploads/user_avatars/1718239683472e5c8d7e617.jpg)
|
Posted: Thu Jan 11, 2007 11:16 pm Post subject: Re: Delay help |
|
|
Ldomi @ Thu Jan 11, 2007 9:41 pm wrote: ericfourfour wrote:
Turing: | var speed : real
var speedEffect : real
var totalSpeed : real
loop
...
if speed changed then
totalSpeed := speed + speedEffect
end if
...
end loop |
What's the "..."?
The ellipses just show you that there is other code in it's place. He just did that to show you the main point instead of hiding it in a mass of variables and statements. |
|
|
|
|
![](images/spacer.gif) |
Ldomi
|
Posted: Sat Jan 13, 2007 4:44 pm Post subject: Re: Delay help |
|
|
ok, thank you very much =) |
|
|
|
|
![](images/spacer.gif) |
|
|