[plt-scheme] I miss end-of-time...
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.
-Paul
-----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
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