fd 50 rt 90 fd 30 await done defer() b = new Date speed Infinity tick 60, -> if touches blue f = new Date t = (f - b) / 1000 write "Finished in " + t + " seconds!" tick null if pressed "up" then fd 1 if pressed "left" then lt 1
▶ The idea of this program is to keep track of the time of the race so you can see how fast you go.
The program uses the Date
object.
You can say b = new Date
to save the
current time as b
. Then if later
(say, when you touch the blue line), you have a
second time f = new Date
,
subtracting f - b
will tell you
the number of milliseconds between the two times.
▶ The setup adds fd 30
to
move the turtle forward 30 pixels so that it
does not start on the blue line. Or else the
race will end as soon as it starts.
await done defer()
pauses the program until all the drawing of
the track finished. (If instead we had done
speed Infinity
at the beginning
of this program, this pause would not be needed.)
b = new Date
creates a new Date
object that is a snapshot of the current time at
the beginning of the race. It
saves this time as the variable b
.
▶ The finish line is touched when
if touches blue
runs the code under it.
f = new Date
creates a new Date
object that is a snapshot of the current time at the
finish of the race. It saves it as the variable f
.
t = (f - b) / 1000
takes the difference
between the finish time f
and the beginning
time b
in milliseconds, and divides by 1000 to
get the time in seconds.
write
shows the "Finished" message, and
tick null
turns off the tick timer.