In this simple game, there will only be three different
locations: a house with a living room and an attic, along
with a garden. Let's define a new variable, called map
that describes this mini world:
|
(setq map '((living-room (you are in the living room
of a wizards house - there is a wizard
snoring loudly on the couch -)
(west door garden)
(upstairs stairway attic))
(garden (you are in a beautiful garden -
there is a well in front of you -)
(east door living-room))
(attic (you are in the attic of the
wizards house - there is a giant
welding torch in the corner -)
(downstairs stairway living-room))))
|
This map contains everything important that we'd like to know
about our three locations: a unique name for the location (i.e.,
living room, garden, and attic) a short description of what
we can see from there (stored in its own list within the bigger
list), plus the where and how of each path in to/out of that
place. Notice how information-rich this one variable is and
how it describes all we need to know but not a thing more.
Lispers love to create small, concise pieces of code that
leave out any fat and are easy to understand just by looking
at them.
|
Now that we have a map and a bunch of objects, it makes sense
to create another variable that says where each of these
objects are on the map:
|
(setq object-locations '((whiskey-bottle living-room)
(bucket living-room)
(chain garden)
(frog garden)))
|
<< begin
< previous -
next >
end >>
|