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

From: engineer at alum.mit.edu (engineer at alum.mit.edu)
Date: Thu Mar 11 16:33:14 EST 2010

Nice.  So stop-when does get called before the draw-handler (and after the
tick-handler).  The errors mentioned below are not due to sequencing but
because no alternative draw-handler was specified in the stop-when.


-----Original Message-----
From: Carl Eastlund [mailto:carl.eastlund at gmail.com] 
Sent: Thursday, March 11, 2010 3:16 PM
To: engineer at alum.mit.edu
Cc: PLT-Scheme Mailing List
Subject: Re: [plt-scheme] I miss end-of-time...

...and the alternate form of stop-when alleviates that problem by
providing an alternate renderer, which can display something like "End
of Game".

Carl Eastlund

On Thu, Mar 11, 2010 at 3:12 PM,  <engineer at alum.mit.edu> wrote:
> 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
> 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,
> the animation should stop?
>> Well, we could use a negative number, since it'll never go negative in
> 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
> whether the number is negative before trying to draw a disk of that
> 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
> the normal course of events.  And it has to be a small enough number that
> 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
> 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

Posted on the users mailing list.