drwxr-xr-x | .. | ||
-rw-r--r-- | 1108 | LICENSE.txt | blob | blame | history | raw |
-rw-r--r-- | 343 | Makefile | blob | blame | history | raw |
-rw-r--r-- | 3909 | README.txt | blob | blame | history | raw |
-rw-r--r-- | 1583 | wump.pvvs | blob | blame | history | raw |
-rw-r--r-- | 1613 | wump_conf.pvvs | blob | blame | history | raw |
-rw-r--r-- | 43035 | wump_game.pvvs | blob | blame | history | raw |
-rw-r--r-- | 29191 | wump_init.pvvs | blob | blame | history | raw |
-rw-r--r-- | 5525 | wump_strings.pvvs | blob | blame | history | raw |
Hunt the Wumpus is a text game where the player navigates a cave, avoiding
bottomless pits and super bats, all while shooting arrows at a Wumpus. To play,
type make run
.
For those unfamiliar with the history of Hunt the Wumpus, Wikipedia has a nice article describing gameplay, development and history.
https://en.wikipedia.org/wiki/Hunt_the_Wumpus
If you want to tweak game settings like the number of rooms, arrows or
obstacles, the file wump_conf.pvvs
contains all the user-configurable
settings. After editing the file, simply run make clean run
to experience
the new settings.
The Wumpus typically lives in a cave of twenty rooms, with each room having three tunnels connecting it to other rooms in the cavern. Caves may vary, however, depending on options specified when starting the game.
The game has the following hazards for intrepid adventurers to wind their way through:
Pits: If you fall into one of the bottomless pits, you find yourself slung back out on the far side of the Earth and in very poor shape to continue your quest since you’re dead.
Bats: As with any other cave, the Wumpus cave has bats in residence. These are a bit more potent, however, and if you stumble into one of their rooms they will rush up and carry you elsewhere in the cave.
Wumpus: If you happen to walk into the room the Wumpus is in you’ll find that he has quite an appetite for young adventurous humans! Not recommended.
The Wumpus, by the way, is not bothered by the hazards since he has sucker feet and is too big for a bat to lift. If you try to shoot him and miss, there’s also a chance that he’ll up and move himself into another cave, though by nature the Wumpus is a sedentary creature.
Each turn you may either move or shoot a crooked arrow. Moving is done
simply by specifying m
for move and the number of the room that you’d
like to move down a tunnel towards. Shooting is done similarly; indicate
that you’d like to shoot one of your magic arrows with an s
for shoot,
then list a set of connected room numbers through which the deadly shaft
should fly!
If your path for the arrow is incorrect, however, it will flail about in the room it can’t understand and randomly pick a tunnel to continue through. You might just end up shooting yourself in the foot if you’re not careful! On the other hand, if you shoot the Wumpus you’ve WON!
vvhitespace/examples/hunt-the-wumpus % make clean run
Welcome to Hunt the Wumpus!
Please press 16 keys to seed the RNG.
|
................
Instructions? (y/n)
n
You're in a cave with 20 rooms and 3 tunnels leading from each room.
There are 2 bats and 2 pits scattered throughout the cave, and your
quiver holds 5 custom super anti-evil Wumpus arrows. Good luck.
----------
You are in room 14 of the cave and have 5 arrows remaining.
*sniff* (You smell the evil Wumpus nearby!)
This room contains tunnels to the following rooms: 18 11 17
Move or shoot? (m/s)
m
To which room do you wish to move?
17
----------
You are in room 17 of the cave and have 5 arrows remaining.
*sniff* (You smell the evil Wumpus nearby!)
This room contains tunnels to the following rooms: 4 14 0
Move or shoot? (m/s)
m
To which room do you wish to move?
4
----------
You are in room 4 of the cave and have 5 arrows remaining.
*sniff* (You smell the evil Wumpus nearby!)
This room contains tunnels to the following rooms: 17 1 7
Move or shoot? (m/s)
m
To which room do you wish to move?
17
----------
You are in room 17 of the cave and have 5 arrows remaining.
*sniff* (You smell the evil Wumpus nearby!)
This room contains tunnels to the following rooms: 4 14 0
Move or shoot? (m/s)
s
Through which rooms do you wish to shoot your arrow?
(type 5 room numbers separated by spaces)
14 18 1
The arrow sails out of room 17 and enters room 14.
The arrow sails out of room 14 and enters room 18.
The arrow sails out of room 18 and enters room 1.
*thwock!* *groan* *crash*
A horrible roar fills the cave, and you realize, with a smile, that you
have slain the evil Wumpus and won the game! You don't want to tarry for
long, however, because not only is the Wumpus famous, but the stench of
dead Wumpus is also quite well known, a stench plenty enough to slay the
mightiest adventurer at a single whiff!!
Game data is stored starting at heap address 0x1000
. A variety of settings
are located here, one per word.
GAME_DATA = 0x1000
GAME_DATA+0 = Number of rooms in cave
GAME_DATA+1 = Number of rooms containing pits
GAME_DATA+2 = Number of rooms containing bats
GAME_DATA+3 = Number of tunnels per room
GAME_DATA+4 = Maximum arrow flight distance
GAME_DATA+5 = Number of arrows
GAME_DATA+6 = Player location
GAME_DATA+7 = Wumpus location
Room data is stored as an array of structs starting at heap address 0x2000
.
Each room struct has the following layout.
BASE+0 = bool:contains_pit? (valid options are 0 or 1)
BASE+1 = bool:contains_bat? (valid options are 0 or 1)
BASE+2 = int:connected room (-1 indicates no tunnel, >0 is index of destination room)
...
BASE+n = int:connected room
Each struct is number_of_tunnels_per_room + 2
words in size. Room numbers
begin at 0
and can be used as indices into this room data array.
The heap space from 0x3000
and up is used as a user input buffer.