Project 11: Video game design

CS151: Computational Thinking: Visual Media
Spring 2019


You have three options for your final project in CS151.

  1. Improve the basic Asteroids game from lab to make it similar to (or better than!) the real arcade game. See the list of extensions below for some inspiration.
    • Note: completing a few small extensions below will not earn you "extension" points on this project — modifications of the lab game are required for Project 11. You may earn extension points on this project, but we are expecting attempts at larger extensions.
  2. Design a new game with similar elements to Asteroids (a player, multiple enemies, collision detection, etc.). In this case, make your game in a new class that inherits from Game. Keeping it simple is a good idea!
    • Note: We do not want to see lots of duplicate code from Game in your other game class. Make use of inheritance and extend the basic game mechanics!
  3. Design a game with completely different mechanics than Asteroids, in which case you would not need to inherit from Game. Keeping it simple is a good idea!
    • Note: Justify in your report why your game deviates from the structure of Game. See note above about duplicate code.

Report deliverables

In addition to submitting your code, we expect four deliverables when you submit the final project.

1) Design

Your design can be a written description, hand-drawn or computer-generated figures, an algorithmic outline, or some combination of those. Clarity is a priority: Your design must be legible and clearly specify what you plan to do and how you plan to do it, so that a reader can easily and fully understand the design and its goals. For example, indicate how many static and moving obstacles are part of the scenario and which of those items can collide with one another. Also, be sure to indicate all user interactions to which the program will respond.

2) Implementation

The second task is to describe your design. Stick with the object-oriented design patterns we have used so far, such as having objects correspond to classes. If you find it useful to create additional parent and child classes, feel free to do so and describe them!

As you implement your design, think about places where you can test pieces of your implementation before you have to put lots of things together, any one of which might have bugs. Think about how lab was structured and built up the game.

3) Testing

The third task is to test out your implementation. For this task, try to partner with someone and test each other's implementations. Discuss how to improve your programs to make them more responsive or interesting or fun.

Explain how you tested the final product, and describe any modifications you made to the program after having someone else try to use it.

No one writes perfect code the first time! If you don't change anything after someone else uses your program, you probably aren't listening to your program's users.

4) Demo

Show off your work. Have your friends try out your program. Take some screen videos of it in action. Take some still screen shots.

This demo should include a screen video of your program in action and three still images--one image for each phase: start, main, and end.



In addition to submitting your writeup, put the python files you wrote on the Courses server in your private directory in a folder named project11.

In general, the intended audience for your writeup is a peer who hasn’t yet taken a CS course. Your goal is to be able to use your writeup to explain to friends what you accomplished in this project and -- even though they aren’t CS students -- to give them a sense of how you did it. What do they need to know in order to appreciate your results and the elegance of your code? You can assume they have read your prior project reports. The outline below explains the features we consider when grading:

Congratulations, computer scientists!

Congratulations on your first video game! Thank you for demonstrating such gumption and creative problem solving this semester. It’s been an honor to work with you, and we hope to see you again in future semesters. 😃

© Caitrin Eaton & Oliver W. Layton