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 make an interesting simulation of some kind.



The first task is to design your program within the following constraints:

The first required part of your report is your 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. As part of your design, 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.


The second task is to implement your design. Stick with the simulation 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!

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.


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 don't change anything after someone else uses your program, you probably aren't listening to your program's users.


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, and end.


The following are a few examples of potential extensions. Please do not feel that your extensions must be drawn from this list. Get creative, design extensions that interest you, and explain why they are awesome when you present the results in your writeup. (For full credit, your extensions must be well documented and explained in the writeup.) Your interest in your own extensions really does make a difference.


Make a new wiki page for your assignment. Put the label cs152f18project11 on the page. Each of you needs to make your own writeup.

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

Colby Wiki

In general, your writeup should follow the outline below.

© 2019 Eric Aaron (with contributions from Colby CS colleagues).