CSSE 120 Final Python Project—Spring 2008-2009

Project Requirements

The final project for the Python part of this course is to implement the game FallingBlock. Rules for the game are given below.

Your project must satisfy these core requirements:

  1. You must design and implement a working FallingBlock game that includes the following:
    1. Rising platforms, both good and bad.  If the falling block (see (b) below) hits a "killer platform", it immediately costs the player one  life.
    2. A falling block that can be controlled by the left and right arrow keys.  We provide an enhanced version of zellegraphics in your project folder.
    3. If the falling block leaves the playing area by either falling off the bottom of the window, being carried off the top of the window by a rising platform, or being moved off of either side of the window by the player's key presses, it costs the player one life.  If the falling block ever falls off the bottom of the window, it is immediately repositioned at a random x-position at the top of the window.
    4. Special pieces called "goodies" that sit on some good platforms.  Goodies either give extra points or an extra life when touched by the falling block. 
    5. A running total score that is based on a combination of elapsed time and "extra point" pieces touched by the falling block.
    6. An additional life is added for every hundred seconds that the player survives or every hundred points accrued.
    1. Display of the current score and current number of lives remaining.
    2. Game play that becomes progressively harder as the game progresses (for example,  by speeding up the velocity of the rising platforms).
    3.  "How to play" instructions for the user.
  2. Your project must use a GUI for game play, on a window that is smaller than 1024 rows by 768 columns (the screen resolution of the projector you will use to present to the class).  zellegraphics should suffice for developing this, but you are welcome to explore and use a different library if you wish. For example, the screenshot below was taken from a project developed using pygame.
  3. You must define your own collection of classes.
  4. All team members must contribute to their project and understand all of the code in it.

Most of the work on your project will be translating the above rules into a working design and implementation. If you are having trouble planning or getting started, get help. It is much better (and easier) to get help early and start off with a good plan than to try to hack a poor design into a semi-functional program in the final days before it is due.

Milestones

To make sure that you are on-track to complete your project, you must meet the following milestones. Each milestone will contribute to your overall project grade. Each milestone must be done before the specified class session unless specified otherwise. For each milestone, you must commit your work to your team's repository and include a clear commit message stating that this milestone is completed.   Your team's repository is named csse120-200930-teamXY, where X is your section number, and Y is your team number within that section.

Example of a very similar game developed using the pygame library:

Here is the executable.

Your program does not have to be so fancy, and your falling object can be a square block instead of a ball.

Grading

Project grades will be based on both individual and group results. We will check off each project milestone, to make sure you are making steady progress. The final project program will be graded based on both the proper functioning of your program and an evaluation of your design, coding style, and documentation (including SVN commit messages). The grade will also depend on the enhancements that you add (see below).  "Playability" is an important factor; it's hard to define precisely, but we all know it when we see it.

Each team member will be required to complete an evaluation survey about his or her own performance and that of each of his or her teammates. We will use these surveys and our own observations to assign individual project grades. Individual grades will be based on your contributions to the project, how well you work with your teammates, and your understanding of all parts of your team's code.    If is not obvious from our work with you that you understand the code, we may ask to meet with you before assigning a grade.

Rubric (in progress)

Suggestions

Enhancements

Once you are done with the basic version, you will be required to add some enhancements. You will earn a higher grade for doing more challenging ones, and the more, the better (as long as your game is still playable). Here are some suggestions, to get you thinking.