Computer Science I for majors by James Tam |
Due Monday Oct 24 at 4 PM
Write a text-based adventure game. There will be three 'rooms' in the game world, within each room the player will see a number of choices and the program will react to the player's selection. The game will repeatedly run the game via a main loop (contains most of the instructions of the program) until the game has been won. The goal of this mini-game is to open the locked door to access the rest of the house. The door will only be unlocked if the player turns the dial in the pantry to the 'red' setting and pulls the lever in the kitchen to the 'back' position. When the door has been unlocked the player can return to the entrance room and open the door to the rest of the house satisfying the goal of this mini-game, the main loop ends and a suitable congratulatory message should be displayed.
Sample program output:
A text file "output_normal_play.txt" shows sample execution of my solution with a normal play through (no erroneous selections). Another text file "output_invalid_selections.txt" illustrates what should happen when the player selects an option that isn't listed. These files can be found in UNIX under /home/231/assignments/assignment2. Alternatively you can see the contents of the A2 directory via a [shortcut link].
Entrance room description
The player begins the game in the entrance. The door that brought the person into the house is gone (it's a "one way portal"). When the player is in this room the game will describe the list of possible actions:
- Try to open the door
- Go through the left entryway
- Go through the right entryway
As mentioned the player cannot open the door until it as been unlocked. The player can freely pass through either entryway with no conditions. Entering a non-existent selection will result in a suitable helpful error message (refer to the last section of the 'repetition' notes, rules of thumb for how to write good error messages) and the above options are displayed again. The program does not have to handle cases where an invalid type of information (e.g. string instead of number) has been entered. As long as the player remains in the room the program will repeatedly display the above menu options (using a loop) after each time that the user enters his/her selection.
Pantry description
As shown in the above map the player can freely pass between the entrance and the pantry. When the player is in this room the game will display the list of possible actions:
- Turn the dial to blue
- Turn the dial to red
- Turn the dial to green
- Don't touch that dial! Return to entranceway
The program should show the current state of the dial e.g. "The dial is currently set to green". Similar to the entrance if the player enters an invalid selection in the pantry, a suitable and helpful error message should be displayed and the list of options for the pantry will be shown again. As long as the player remains in the room the program will repeatedly display the above menu options (using a loop) after each time that the user enters his/her selection.
Kitchen description
As shown in the above map the player can freely pass between the entrance and the kitchen. When the player is in this room the game will display the list of possible actions:
- Pull lever to the 'back' position
- Push the lever to the 'forward' position
- Don't touch the lever and return to entranceway
The program should show the current lever position e.g. "The lever is currently set to forward". Similar to the entrance if the player enters an invalid selection in the kitchen, a suitable and helpful error message should be displayed and then the list of options for the kitchen will be shown again. As long as the player remains in the room the program will repeatedly display the above menu options (using a loop) after each time that the user enters his/her selection.
In addition to grading on whether the above functionality was correctly implemented TAs will also look at style and documentation.
Documentation (synopsis from the intro to programming notes)
Style (synopsis from the intro to programming notes)