Computer Science Canada

Extremely Urgent!!! I need help with putting a timer...

Author:  koolmoe [ Tue Jan 21, 2003 2:50 pm ]
Post subject:  Extremely Urgent!!! I need help with putting a timer...

Hey guys i attached my pacman game so far, and i really need to kno how to add in a timer....Because i want it so that you hafta collect all the dots before time runs out. Please i need this information by today, because my project is due VERY SOON!! I'd really really REALLY appreciate ur help...THx in AdvAnce!

------------------------------------------------------------------------------------
also any comments or tips will be helpful!

Author:  Tony [ Tue Jan 21, 2003 4:10 pm ]
Post subject: 

code:
var timeStart, timeNow : int
var c:string
var timePassed:boolean := false

process T()
wallclock(timeStart)
loop
delay(1000)
wallclock(timeNow)
locate(1,1)
put 10 - (timeNow - timeStart)

exit when timeNow - timeStart >10
end loop
timePassed:=true
put "time's up!"
end T

fork T


this is basically a timer...

Here's how you can put that into your program. You use wallclock() at the beginning of the level to get the start time. Then every time you go through a loop (doesn't matter which one, as long as it keeps on running throughout the whole level... such as movement loop, or better yet some process such as enemy AI which is independant of pacman movement) you wallclock again to find out current time.

Right after that you find the difference between start time and now time and if its greater then timer allowed for level, then its "time up" 8)

Author:  Catalyst [ Tue Jan 21, 2003 4:10 pm ]
Post subject: 

For a timer you can use clock it gives the time since the program started in ms. ( clock ("variable to use here")) You can use this to make a timer

For example like 20 seconds

code:


var time:int

loop

clock (time)
locate (1,1)
put 20-(time/1000)

end loop




Author:  koolmoe [ Tue Jan 21, 2003 5:25 pm ]
Post subject:  for the clock..

how do you do an exit when statement?

Author:  koolmoe [ Tue Jan 21, 2003 5:42 pm ]
Post subject:  timer works and everything but...

THe timer works, but it interferes with my pacman movement...my pacman moves at the same speed as the timer....i want my pacman to move faster than the timer What's going on? please help!

Author:  azndragon [ Tue Jan 21, 2003 6:42 pm ]
Post subject: 

code:
var word : string
loop
put "Enter a word, type exit to stop."
get word
exit when word = "stop"
end loop

Author:  Tony [ Tue Jan 21, 2003 7:12 pm ]
Post subject: 

make sure you don't put delays into timer...

I used delays in the example to count time and wallclock to varify time.

You just need to use wallclock (or clock) to find out the time elapsed and compare to your requirements.

Author:  koolmoe [ Tue Jan 21, 2003 8:43 pm ]
Post subject:  to tony

hey did you look at my code? because i'm not sure where to insert the timer..where i put it, the timer interferes with my pacman movement. For example, if the timer goes down by seconds, then pacman will move with 1 second delays between...

Author:  Tony [ Tue Jan 21, 2003 8:46 pm ]
Post subject: 

then you're using the timer wrong...

you don't use the command delay() and you don't put timer in its own loop.

You use wallclock to find the time the level started, then you add wallclock inside already existing movement loop to find the time at which each movement takes place. Then you check how much time passed.

Author:  koolmoe [ Wed Jan 22, 2003 9:53 pm ]
Post subject:  oh alright...

hey can you tell me like explain to me what the process T function does? because i may have to expain it to my teacher..also, what i'm thinking is that the wallclock (startimerunning) corresponds with the internal clock of the computer?

Author:  Tony [ Thu Jan 23, 2003 5:10 pm ]
Post subject: 

yes, wallclock does corespond with internal computer clock. It gives you time in seconds passed since 1/1/1970

here's an explanation for the process:

process T() - declear process
wallclock(timeStart) - find the time process started
loop - start program's loop
delay(1000) - wait for a second. this is not needed, it just saves resources
wallclock(timeNow) - get current time
locate(1,1) - locates where output will be
put 10 - (timeNow - timeStart) - counts down the time left to reach 10

exit when timeNow - timeStart >10 - exits loop when over 10s passed
end loop
timePassed:=true - sets boolean variable to true so that other parts of the program can use this variable to see if process ended or not
put "time's up!" - says that process finished
end T - ends process block

fork T - calls the process to start



I hope this helps 8)

Author:  koolmoe [ Fri Jan 24, 2003 2:19 pm ]
Post subject:  awesome man!

yea thx man that helped A LOT! it was kool of you to help me out and take ur time thx dude!

Author:  Tony [ Fri Jan 24, 2003 6:07 pm ]
Post subject: 

Very Happy you're welcome


: