This is your final project and you have freedom to decide what you want to do. At the end of the term, you will surprisingly find how capable you are to develop a real computer game for your friends to play with! You will design and implement a text-based game where the player movers through a series of rooms or spaces. They will need to gather items to achieve some purpose. You need to meet the specific requirements in your program, and all the other implementation details are left for you to decide.
You will create a series of rooms or spaces for the player to move through. (By default this is a one-player game. If you want to add more players, you can extend your game later.) Each space will be a class with at least four pointer variables (or arrays of pointers) that link to other spaces (Right, Left, Top, Bottom, etc.). Even if your structure is linear, such as a train, you will still have at least four pointer variables in the class. Be creative and try to use them all! Note that any unused pointers will point to NULL. (The requirement for four pointers in each space is to simplify coding. If you need more pointers for your theme, feel free to add more.)
The space will also have appropriate data members. You must have at least 6 spaces of at least 3 different types. You will have a space abstract class that will have special pure virtual functions. Each type of space will have a special action. It could be the controls in the engine, or to control access to one of the doors (pointers), or it could simply turn on the lights. So you will have at least 3 derived classes for your spaces. To continue with the train theme, you could have a passenger car, or baggage car. Or one space could have controls such as the engine.
You must have a goal for the player in your theme. Maybe it is to solve a crime (like Clue?). Maybe the aliens have invaded your spaceship and normal weapons do not work but broccoli causes them to leave! You may have a random goal (so one time broccoli works, next time it is a pillow). Based on your theme, the player must discover the solution to win the game.
You must have some way to keep track of which space the player is in. The player will have a container (backpack, knitting bag, or notebook) to carry items. The container must have some limit (weight, size, etc.). One or more of these items will be required as part of the solution, such as a key to open the locked door.
For simplicity, your game should not require free-form input. It is frustrating if you did not spell something correctly. You should have a time limit to urge the player on as well. This does not mean a literal clock, just some way to prevent the game from going on indefinitely. (Make sure you give enough time to allow the game to perform through testing.) The player must interact with parts of the space structure, and not just simply collecting things. This can be throwing something at the monster, operating a light switch (or other control), opening doors, or singing to get the baby back to sleep. That means, when the player is moving around, he would not only get information from the spaces, but also change the status of the spaces.
To make it easy for your TA to grade the project, you must provide a menu option similar as what you did for previous assignments. Before the beginning of the game, reveal the goal for the player. If the grader does not know the goal, they cannot tell if the program is working correctly. This information does not need to be elaborate. Print something like the broccoli causes the aliens to leave, or the murder was done by Mr. Duck, club car, fishing pole.
As long as you meet those requirements, all the other details are left for you to decide. You must develop a theme for your game and try to make it interesting. Also, the graders will vote for the best 10 themes in the class and those students will get 10% of extra credit for the final project.