Lab 10: Arcade Game
A CS151 Final Project
In this week's lab, we will start working on a final game project of your choosing. The goal of this assignment is to demonstrate independent problem solving and synthesis of old projects and ideas into new ones. Therefore, your best resource is the collection of games and projects that we have built throughout the semester. I recommend that you start working on this project today. As always, let me know if you have any questions or if you need any help.
Check the list of games below, and select a game to implement as your final project.
Game | Possible points | Resources |
Asteroids | 26 | |
Tron (Light Cycles) | 26 | |
Lunar Lander | 27 | |
Pole Position | 27 | |
Arkanoid | 27 | |
Xevious | 28 | |
Grand Theft Auto | 29 | |
Tetris | 30 | |
Super Mario Bros. | 30 |
Every game is expected to be implemented using classes, and inheritance should be used when needed. Any time you find yourself repeating code in two classes you should consider using inheritance. You can use any concept that we have covered in class, but you can NOT use lambda functions, list comprehension, or any concept that we did not cover.
top-down design is the decomposition of a system into smaller parts in order to comprehend its compositional sub-systems. In this step, you are expected to make a list of the classes and objects needed to implement your game. Then, think about how the objects will interact with each other and define the behaviour of each object.
I recommend that you talk to other students who are implementing the same game to brainstorm together. Feel free to continue to talk to each other after this lab, a mailing list or a chat group is not a bad idea. Keep in mind that you are encouraged to talk to others, but sharing code or copying from each other are not allowed.
You are expected to implement the main features of the game. If some features of the game are not possible, please confirm that with me through email.
By the end of this lab, you are expected to draft a list of objects and a list of behaviours for each object. For example, the Asteroids game, has the following objects:
The list of behaviour should include (but not limited to) the following:
You can make additions to the game other than the original implementation to gain extra extension points on top of the possible points listed in the table above. As always, extensions that focus on functionality are worth more than extensions that focus on aesthetics. Make sure you write about your extensions in detail in your project report. Be creative!