[plt-scheme] I miss end-of-time...

From: engineer at alum.mit.edu (engineer at alum.mit.edu)
Date: Thu Mar 11 15:12:50 EST 2010

Using a boolean poses the same problem as using a negative number.

-----Original Message-----
From: plt-scheme-bounces at list.cs.brown.edu
[mailto:plt-scheme-bounces at list.cs.brown.edu] On Behalf Of Carl Eastlund
Sent: Thursday, March 11, 2010 3:04 PM
To: Stephen Bloch
Cc: PLT-Scheme Mailing List
Subject: Re: [plt-scheme] I miss end-of-time...

I recommend representing the world as either Nat or false, using false
for end of game, and use the (stop-when stop? draw) form that lets you
specify an alternate rendering function for the final world.  That
form was added specifically for this case, so that if you have an
alternate world for the end of the game you can draw it separately.

Carl Eastlund

On Thu, Mar 11, 2010 at 2:34 PM, Stephen Bloch <BLOCH at adelphi.edu> wrote:
> In recent versions of the world/universe teachpacks, the "end-of-time"
function has been removed.  This makes some animations considerably harder
or more unnatural to write.
>
> Try this: write an animation of a disk whose radius starts at 0 and grows
by 1 pixel per second.  The animation stops when the user presses any key on
the keyboard.
>
> You could do this with a struct that contains a "quitting?" field, but my
students won't see structs for several more weeks. So the model has to be
just a number.  Now how could the key handler indicate, with a number, that
the animation should stop?
>
> Well, we could use a negative number, since it'll never go negative in the
normal course of events... but since the draw handler is called after the
tick/mouse/key handlers but before the stop-when handler, that means we're
going to call a function that draws a disk of specified radius with a
negative number, and it'll crash.  We could write the draw handler to check
whether the number is negative before trying to draw a disk of that radius,
but (a) that adds unnecessary complexity, and (b) my students won't see
conditionals for another week and a half.
>
> Alternatively, we could use a really large number, and just hope nobody
runs the animation for long enough that the radius gets up to that point in
the normal course of events.  And it has to be a small enough number that a
disk of that size COULD be drawn, or the draw handler will crash again as
above.
>
> Or I guess we could use a fraction.  Which feels really weird and
unnatural, and relies on the fact that the "circle" function rounds when you
give it a fractional radius.
>
> With an "end-of-time" function, it's trivial: the key handler ignores its
parameters and calls "end-of-time".
>
>
> Stephen Bloch
> sbloch at adelphi.edu
_________________________________________________
  For list-related administrative tasks:
  http://list.cs.brown.edu/mailman/listinfo/plt-scheme



Posted on the users mailing list.