CSSE 120 Final Python Project—Winter 2010–11

Project Requirements

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

Your project must satisfy these core requirements:

  1. You must design and implement a fully functional Game of Pig including:
    1. proper alternation of turns
    2. scoring according to the game's rules
    3. detecting who won the game
  2. Your project must use a GUI for game play. Your game's window should be no larger than 1024 x 768 pixels, so it can be easily displayed to the class using the projector. zellegraphics should suffice for developing the GUI, but you are welcome to explore and use a different library like pygame if you wish.
  3. We strongly encourage you to use top-down design, define some kind of new objects (using dictionaries or instances of classes you create), or consult with your instructor on alternative design choices.
  4. For full credit, you must implement some of the enhancements as discussed below.
  5. All team members must contribute to and understand their project. Exam 2 will include questions about your project.

Most of the work on your project will be translating the rules provided into a functional design and implementation. There are not many requirements on how specifically you do this. This can be a double edged sword. On the one hand you have a great deal of freedom in designing your solution; on the other hand we are giving very little specific guidance. 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 the project is due.

Project Teams

I've posted your project teams and repository information here. Each member of your team should checkout your team repository at the start of the project. To minimize SVN conflicts, follow this routine with each editing session:

Using this cycle will minimize conflicts. If you get a conflict, get help from a member of the course staff to resolve it.

Remember to provide appropriate commit messages. We’ll be grading your proper use of SVN.

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.

Grading

Project grades will be based on both individual and group results. We may grade each project milestone, plus the final project program and presentation. Grading will include both the proper functioning of your program and an evaluation of your design, coding style, documentation, teamwork, and proper use of SVN.

Each team will be responsible for presenting and demonstrating their work to the class.

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.

About the Game of Pig

Rules

In its basic form, Pig is just a race between two players to reach 100 points. Players alternate turns. During a player's turn they repeatedly roll a single die, adding the value rolled to their turn total. At any point they may hold, adding their turn total to their game total. During a turn, if the player rolls a one, then they forfeit their turn total; however, their game total is always safe. Play passes to the other player after the first player holds or rolls a one.

Other Resources

The Wikipedia article on Pig is a good resource, as is the on-line version of Pig at Gettysburg College.

Suggestions

Enhancements

Once you are done with the basic version, you should add some enhancements. A game with no enhancements will earn no better than a C grade. You will earn a higher grade for doing more challenging ones, and the more, the better, including extra credit. Be creative. What's cool and challenges you? Below are some ideas. Feel free to discuss other ideas with your instructor. Have fun with this!

Thanks to Todd Neller at Gettysburg College for his Nifty Assignment from SIGCSE 2010!