Formatting changes for README for Hunt the Wumpus.
[vvhitespace] / examples / hunt-the-wumpus / README.md
CommitLineData
4dafc84c
AT
1# Overview #
2
3Hunt the Wumpus is a text game where the player navigates a cave, avoiding
4bottomless pits and super bats, all while shooting arrows at a Wumpus. To play,
5type `make run`.
6
7For those unfamiliar with the history of Hunt the Wumpus, Wikipedia has a nice
8article describing gameplay, development and history.
9
10<https://en.wikipedia.org/wiki/Hunt_the_Wumpus>
11
12
13# Configuration #
14
15If you want to tweak game settings like the number of rooms, arrows or
16obstacles, the file `wump_conf.pvvs` contains all the user-configurable
17settings. After editing the file, simply run `make clean run` to experience
18the new settings.
19
20
21# Instructions #
22
23The Wumpus typically lives in a cave of twenty rooms, with each room having
24three tunnels connecting it to other rooms in the cavern. Caves may vary,
25however, depending on options specified when starting the game.
26
27The game has the following hazards for intrepid adventurers to wind their
28way through:
29
9b9fb9ec
AT
30 - **Pits:** If you fall into one of the bottomless pits, you find yourself
31 slung back out on the far side of the Earth and in very poor shape to continue
32 your quest since you're dead.
4dafc84c 33
9b9fb9ec
AT
34 - **Bats:** As with any other cave, the Wumpus cave has bats in residence.
35 These are a bit more potent, however, and if you stumble into one of their
36 rooms they will rush up and carry you elsewhere in the cave.
4dafc84c 37
9b9fb9ec
AT
38 - **Wumpus:** If you happen to walk into the room the Wumpus is in you'll
39 find that he has quite an appetite for young adventurous humans! Not
40 recommended.
4dafc84c
AT
41
42The Wumpus, by the way, is not bothered by the hazards since he has sucker
43feet and is too big for a bat to lift. If you try to shoot him and miss,
44there's also a chance that he'll up and move himself into another cave,
45though by nature the Wumpus is a sedentary creature.
46
47Each turn you may either move or shoot a crooked arrow. Moving is done
9b9fb9ec 48simply by specifying `m` for move and the number of the room that you'd
4dafc84c 49like to move down a tunnel towards. Shooting is done similarly; indicate
9b9fb9ec 50that you'd like to shoot one of your magic arrows with an `s` for shoot,
4dafc84c
AT
51then list a set of connected room numbers through which the deadly shaft
52should fly!
53
54If your path for the arrow is incorrect, however, it will flail about in
55the room it can't understand and randomly pick a tunnel to continue
56through. You might just end up shooting yourself in the foot if you're
57not careful! On the other hand, if you shoot the Wumpus you've WON!
58
59
60# Example #
61
62 vvhitespace/examples/hunt-the-wumpus % make clean run
63
64 Welcome to Hunt the Wumpus!
65
66 Please press 16 keys to seed the RNG.
67 |
68 ................
69
70 Instructions? (y/n)
71 n
72
73 You're in a cave with 20 rooms and 3 tunnels leading from each room.
74 There are 2 bats and 2 pits scattered throughout the cave, and your
75 quiver holds 5 custom super anti-evil Wumpus arrows. Good luck.
76
77 ----------
78
79 You are in room 14 of the cave and have 5 arrows remaining.
80 *sniff* (You smell the evil Wumpus nearby!)
81 This room contains tunnels to the following rooms: 18 11 17
82 Move or shoot? (m/s)
83 m
84 To which room do you wish to move?
85 17
86
87 ----------
88
89 You are in room 17 of the cave and have 5 arrows remaining.
90 *sniff* (You smell the evil Wumpus nearby!)
91 This room contains tunnels to the following rooms: 4 14 0
92 Move or shoot? (m/s)
93 m
94 To which room do you wish to move?
95 4
96
97 ----------
98
99 You are in room 4 of the cave and have 5 arrows remaining.
100 *sniff* (You smell the evil Wumpus nearby!)
101 This room contains tunnels to the following rooms: 17 1 7
102 Move or shoot? (m/s)
103 m
104 To which room do you wish to move?
105 17
106
107 ----------
108
109 You are in room 17 of the cave and have 5 arrows remaining.
110 *sniff* (You smell the evil Wumpus nearby!)
111 This room contains tunnels to the following rooms: 4 14 0
112 Move or shoot? (m/s)
113 s
114 Through which rooms do you wish to shoot your arrow?
115 (type 5 room numbers separated by spaces)
116 14 18 1
117 The arrow sails out of room 17 and enters room 14.
118 The arrow sails out of room 14 and enters room 18.
119 The arrow sails out of room 18 and enters room 1.
120
121 *thwock!* *groan* *crash*
122 A horrible roar fills the cave, and you realize, with a smile, that you
123 have slain the evil Wumpus and won the game! You don't want to tarry for
124 long, however, because not only is the Wumpus famous, but the stench of
125 dead Wumpus is also quite well known, a stench plenty enough to slay the
126 mightiest adventurer at a single whiff!!
127
128
129# Heap Assignments #
130
131Game data is stored starting at heap address `0x1000`. A variety of settings
132are located here, one per word.
133
134 GAME_DATA = 0x1000
135
136 GAME_DATA+0 = Number of rooms in cave
137 GAME_DATA+1 = Number of rooms containing pits
138 GAME_DATA+2 = Number of rooms containing bats
139 GAME_DATA+3 = Number of tunnels per room
140 GAME_DATA+4 = Maximum arrow flight distance
141 GAME_DATA+5 = Number of arrows
142 GAME_DATA+6 = Player location
143 GAME_DATA+7 = Wumpus location
144
145Room data is stored as an array of structs starting at heap address `0x2000`.
146Each room struct has the following layout.
147
148 BASE+0 = bool:contains_pit? (valid options are 0 or 1)
149 BASE+1 = bool:contains_bat? (valid options are 0 or 1)
150 BASE+2 = int:connected room (-1 indicates no tunnel, >0 is index of destination room)
151 ...
152 BASE+n = int:connected room
153
154Each struct is `number_of_tunnels_per_room + 2` words in size. Room numbers
155begin at `0` and can be used as indices into this room data array.
156
157The heap space from `0x3000` and up is used as a user input buffer.