Strangely Consistent

Musings about programming, Perl 6, and programming Perl 6

July 5 2012 — moving around II (up/down, in/out)

First, by request, I'm implementing 'help' in the game. (seldon++) Better sooner than later, I guess.

$ bin/crypt
CRYPT
=====

You've heard there's supposed to be an ancient hidden crypt in these
woods. One containing a priceless treasure. Well, there's only one way
to find out...

> help
Here are some (made-up) examples of commands you can use:

look
[walk] north/south/east/west

> quit

I'll make sure to keep the help message up-to-date as I add functions to the game.

I implemented the up/down directions. As part of this, because it was easier to test it that way, I cleared up the misplaced 'clearing' initialization from yesterday. This quite naturally required the new event Adventure::PlayerWasPlaced (for giving the player an initial position) and X::Adventure::PlayerIsNowhere (for trying to move when this wasn't done). Things are in the right place now and everyone's happy.

Hm, it also means I just implemented a teleportation mechanism! Probably not such a bad idea for a general adventure game. Though I won't need it in Crypt.

Implementing in/out is a little more involved, since we're now out of primary directions. The compass directions and up/down are all primary directions. "In" and "out" are just aliases for one of those. So we wire up the event Adventure::DirectionAliased which lets us call some of the existing directions "in" or "out".

None of this actually allows us to play the game any further. So it's a good thing I implemented 'help' so I have something to show today apart from passing tests!

Also, note that I'm quite aware that connections are not yet two-way. They should be. That is, when we connect 'clearing' to 'hill' in the east direction, then 'hill' should also connect to 'clearing' in the west direction. We'll need this soon, maybe as soon as tomorrow.

Anyway, tomorrow we'll tackle room descriptions in earnest. Probably I'll add all rooms in one go, and make sure walking between them works.