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

From: Carl Eastlund (carl.eastlund at gmail.com)
Date: Thu Mar 11 15:16:16 EST 2010

...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 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


Posted on the users mailing list.