Project 1 (200 Pts): Freecell

Due: Thursday, July 13

FAQ | About Demos

In this project, you will develop the solitaire game Freecell. (Windows users are probably very familiar with this game.)

The rules for the card solitaire game Freecell can be found at Solitaire Central. See also freecell.org for information about the game and implementations.

You are to develop a suite/framework of classes and code in Java to allow the user to play Freecell in a GUI. You should first make sure your code works outside the GUI environment so that you are not developing (and debugging!) both the GUI (the view) and the model and controllers concurrently.

Part 1: Understanding a Codebase

An important part of Java (and coding in general) is understanding and using other people's code. For this project, I am providing you with a codebase, solitaire.jar. You can view the code online. You will need to read and understand the code before trying to write additional code. I also generated the Javadocs for the code, but you will probably get more out of reading the code.

Besides reading the code, you should make sure that you can run the code, to better understand what the code does. To run the code, you must include cardimages.jar in your CLASSPATH. (Review the lecture notes about how to do this.)

Part 2: Designing your game

You should think about the components of the game and adhere to the rules of the game, described in the links above. Model the game so that you can easily and clearly separate the functionality between classes.

Part 3: Designing your GUI

For full credit, you must implement the following features in the GUI:

Opportunities for Extra Credit

You must have the above requirements implemented before receiving any extra credit. You can earn up to 25 points extra credit.

Packages

Use the package hierarchy that we've discussed all semester.

Java Docs

Generate and submit Java Docs for all of your classes. Make sure that the Javadocs are viewable from online.

README

Your README file should contain

Test Plan

You must write up how you tested your program. Describe how you tested individual, groups of classes, and the entire application. This plan will be the starting point for your demo with Ke.

Submission

Submit a printed version of your assignment (script file) at the beginning of class on Thursday, July 13. You will schedule I time to present your demo to Ke the following Monday-Wednesday.

Electronic Submission Organization

Your submission directory will look something like this:

Email a gzipped tar file of your assignment directory, which includes the the Java files, the class files, the docs, and README to Ke (kli at cis.udel.edu) before Thursday, July 13 at 11:59:59 p.m. The name of your zipped submission should be lastname-project1.tar.gz (or .zip or whatever the appropriate extension). The subject line should be "[Your Name] CISC370: Project 1 Submission".

Please do not submit your code from earlier assignments. You may need to create a temporary location that contains your submission so that you do not submit code from earlier assignments.

If you have any questions about submission, ask early!

We will follow similar directory structures in future submissions.

Grading (200 pts)


This problem is based on a problem from Owen Astrachan, who wrote the solitaire classes.