CS 152: Project 11

Title image Project 11
Spring 2017

Project 11: Something Interactive

The purpose of the last assignment is to do something fun with your physics engine and user interaction. You can design a simple game or try simulating something interesting.


  1. Design: the first task is to design out your program. The following constraints apply to your design.

    • Your program must have a start screen. This does not have to have any moving parts, but it can. It should tell the user how to begin the main phase of the program.
    • Your program must have a main phase. The main phase should have some moving parts, respond to user input, and be something interesting. A pinball game would be a simple choice. Asteroids would be a more complex choice, but not too bad. Keeping it simple with very few moving parts is a good idea.
    • Your program must have a final screen. This does not have to have any moving parts, and it does not have to allow the user to replay the main phase. It can simply exit when the user provides the right input. Ideally, you want to tell the user something about their experience in the main phase, such as a final score.

    The first required part of your report is your design.

    Your design can be a written description, hand-drawn or computer-generated figures, or an algorithmic outline, or some combination. It must be legible and clearly specify what you plan to do and how you plan to do it. As part of your design, indicate how many static and moving obstacles are part of the design and which of those items can collide with one another. Also indicate all user interactions to which the program will respond.

  2. Implementation: the second task is to implement your design. Stick with the simulation design patterns we have used so far, such as have objects correspond to classes. If you find it useful to create additional parent and child classes, do so.

    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.

    The second required part of your report is a discussion of your implementation, including at least one example of testing part of your implementation before combining it with other elements.

    Do not include lots of code in your discussion. Pseudo-code (Python-like code) is fine, but avoid having lines of Python in your report.

  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.

    The third required part of your report is a summary of your overall testing and 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 change nothing after someone else uses your program, you aren't listening.

  4. Demonstration: show off your work. Have your friends try out your program. Take some screen videos of it in action. Take some still screen shots.

    The fourth required element of your report is a screen video of your program in action and three still images--one image for each phase: start, main, end.


Each assignment will have a set of suggested extensions. The required tasks constitute about 85% of the assignment, and if you do only the required tasks and do them well you will earn a B+. To earn a higher grade, you need to undertake one or more extensions. The difficulty and quality of the extension or extensions will determine your final grade for the assignment. One complex extension, done well, or 2-3 simple extensions are typical.

Write-up and Hand-in

Turn in your code by putting it into your private hand-in directory on the Courses server. All files should be organized in a folder titled "Project 11" and you should include only those files necessary to run the program. We will grade all files turned in, so please do not turn in old, non-working, versions of files.

Make a new wiki page for your assignment. Put the label cs152s17project11 in the label field on the bottom of the page. But give the page a meaningful title (e.g. Milo's Project 11).

In general, your intended audience for your write-up is your peers not in the class. Your goal should be to be able to use it to explain to friends what you accomplished in this project and to give them a sense of how you did it. Follow the outline below.