Hi Stuart, There is a bug in end-game? which means it never ends. I'm not sure if this is the most idiomatic way to fix it but it seems to work.
< (defn end-game? [{:keys [apple snake]}]
< (cond
< (lose? snake) (do (reset-game) "You lose!")
< (win? snake) (do (reset-game) "You win!")))
---
> (defn end-game? [game]
> (let [{:keys [apple snake]} game]
> (cond
> (lose? @snake) (do (reset-game game) "You lose!")
> (win? @snake) (do (reset-game game) "You win!"))))
Cheers
Tom
(I include a version which won't run off the edge, enjoy)
2009/1/6 Stuart Halloway <[email protected]>
>
> Hi Rich,
>
> Thanks for the suggestion. I have moved all the per-game stuff (apple,
> snake, frame, panel, and timer) into a local let inside a game
> function. Is that what you had in mind?
>
> Stuart
>
> > On Jan 6, 11:54 am, Stuart Halloway <[email protected]> wrote:
> >>> Code like @*foo* is not something I've seen in any code Rich has
> >>> written, so I think Stuart is right in considering removing the
> >>> asterisks on *apple* and *snake*
> >>
> >> I plan to remove them. What I still wrestle with is using "snake" at
> >> the top level as ref, and then having a bunch of pure functions that
> >> shadow the top level snake with a binding to an immutable snake data
> >> structure.
> >>
> >
> > Might I suggest then that you do away with the globals snake and apple
> > altogether?
> >
> > The result will be a much cleaner program.
> >
> > Rich
> >
> > >
>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---
my-stu-snake.clj
Description: Binary data
