CS 115 Project 2, Spring 2017:
Match Game

[Back to CS 115 schedule]


Summary: In this project, you will make a simple matching game using the graphics package. The idea is that users will click on cards one at a time, to flip them over to find pairs. The below video shows the final game and a demonstration of gameplay.

Due dates:


Getting Started

Download the following files into your PyCharm directory for Project 02:

Do not modify match_graphics.py.

The file icons.zip should be unzipped to create the directory icons/ which holds a series of .gif files. Do not rename these graphics or their parent directory, since the file names are listed in match_graphics.py. The directory icons/ needs to be in the same directory as graphics.py, as match_graphics.py and as your code.


Checkpoint A (5 points)

For Checkpoint A, you will need to demonstrate a program that draws the game board with all the cards shown. You need to be able to display the following window to complete the checkpoint:
Screenshot of Checkpoint A

Specifically:

Hints:


Checkpoint B (5 points)

Your Checkpoint B code needs demonstate the following:

Hints:


Final Code

In your final code, you will extend your Checkpoint B code. At this point, the game will mark matches, remember prior matches and detect when we have enough matches to declare victory. It should look just like the opening video in behavior.

Hints:

There is no demo for your final code. See the end of this specification for submission instructions.


Grading

Correctness [65%]

The most important part of your grade is the correctness of your final program. Your program will be tested numerous times, using different inputs, to be sure that it meets the specification. A detailed grading sheet for this project is posted here.

Programming Design and Style [25%]

In addition to being correct, your program should be easy to understand and well documented. For details, see the grading sheet above.

Checkpoints [10%]

Your checkpoints are each worth 5 points, as described above. The checkpoints cannot be submitted late.

Extra credit [up to 5%]

There are lots of possibilities to extend this project for extra credit. For example, you may select alternative game icons from http://game-icons.net (I converted these to 125x125 pixel GIFs to make the two icon sets provided above). You may also use different color schemes to create your own themed game. If you have an idea you'd like to implement, then (at least a day before final code submission) you need to propose it to the instructor in writing on Piazza and get approval for the idea. You are responsible to making sure it is possible to satisfy the whole project grading rubric while also encorporating your extra credit: you can't add functionality if it means removing some graded functionality


Submitting your final code

You should submit your final code on Moodle by the deadline. As a backup, I strongly encourage you to upload a copy to your blue directory in case something goes wrong with your submission to Moodle.

Please name your file yourlastnameP2.py, substituting your actual last name (in lowercase) as indicated.


Collaboration policy

Programming projects must be your own work, and academic misconduct is taken very seriously. You may discuss ideas and approaches with other students and the course staff, but you should work out all details and write up all solutions on your own. The following actions will be penalized as academic dishonesty:

Late policy

There is a 48-hour grace period associated with the final project deadline. This grace period is designed to only cover small personal emergencies and other unexpected events. No other consideration will be given for these small emergencies.