Friday, July 23, 10:00 am
Your final project is to implement and enhance the game of FreeCell. Code for a very simple user interface will be provided. Your first task will be to write the logic for the game so that the game is playable with the given user interface. After the game is working, you may add some enhancements for additional marks. A Show and Tell in Practicum 12 will allow you to show off your creativity and earn even more marks.
There are a number of deadlines to meet before the final due date:
| Milestone | Requirements |
| M1: End of Practicum 06 | Have a team of 2-4 people identified (and registered). Hand in lists of candidate classes, methods, and use cases. |
| M2: Wednesday, June 23, 10:00 am | Hand in a complete design (i.e. a UML class diagram) showing the inheritance hierarchy of your classes, as well as the attributes and services of all of your classes. |
| M3: Friday, July 2, 10:00 am Note: July 1st is a University holiday. |
Submit code which passes all of the tests in Freecell.main the main method in the Freecell class except for the last tests which involve loading a game from a file. |
| M4: Friday, July 9, 10:00 am | Submit code which passes all of the tests in Freecell.main (including the tests which involve loading a game from a file), as well as at least three additional tests for use cases you identified in Pra 06. Add your additional tests after the existing tests and clearly indicate in your description for each test that it is an additional test. This should get you to the point where your code plays a legal game with the provided user interface. |
| M5, Friday, July 23, 10:00 am | Final submission of your project including any enhancements that you have decided to implement. |
| Practicum 12 | (Optional.) Participate in the Show and Tell. Extra marks are available. |
FreeCell comes with Windows, usually under the Accessories/Games menu. To play the game, choose Run... from the Start menu and type freecell in the box. Click OK or hit Enter and the game should launch. Play a round! Here's a screen shot of a sample game in progress.
The object of the game is to move all the cards to the four foundation piles (top-right), using the four free cells (top-left) as place holders. To win, you must build four stacks of cards on the foundation piles. Each stack consists of a single suit (Hearts, Diamonds, Spades, or Clubs) and is built in rank order (Ace on the bottom, followed by 2, 3,..., 10, Jack, Queen, King) .
There is a FAQ page for freecell at http://home.earthlink.net/~fomalhaut/fcfaq.html.
A jokerless deck of cards is well shuffled. The cards are dealt, face-up, into eight piles the 4 piles on the left have seven cards each and the four piles on the right have six cards each.
The mark you earn on the project corresponds to a) how ambitious you are, and b) how well you execute your ambitions.
Getting the game to work as described by the minimum requirements (including reading from a file) will account for 60% of your final mark. Another 10% is covered by design work that you will complete in Weeks 06 and 07. The remaining 30% is earned via enhancements. Enhancements are improvements to the game to make it look better, work better, or play a better game of Freecell.
FreeCell class and supporting classes so that
the users may play a legal game of FreeCell according to the rules given
above. Some implementations of FreeCell let the players move piles of
cards at a time. This is not a feature you are required to
implement to meet the minimum requirements. Your game only needs to be
able to move one card at a time.Check out the list of available Enhancements. You are strongly encouraged to dream up enhancements that you want to implement. Send e-mail to Carrie Howells before you start to make sure your idea is possible and of sufficient complexity to qualify for the extra marks.
You should not implement any enhancements until after you have the game working correctly with the provided user interface. Don't get distracted before your most important work is finished!
For Milestone M1, submit your work on paper to your instructor at the end of Practicum 06.
For Milestone M2, submit your work on paper to the appropriate hand-in box outside of MC 4065.
For Milestones M3 to M5 you should create a zip file called project.zip that contains everything needed to run your program. Look here for instructions on how create a zip file.
For Milestone M3, electronically submit your project.zip file using the assignment code of projM3.
For Milestone M4, electronically submit your project.zip file using the assignment code of projM4.
For Milestone M5, electronically submit your project.zip file using the assignment code of projM5.
Interview marking will be held in the labs on Monday, July 26th. Once you have registered your team, you should sign up for a time to have your project marked. Do not modify your project after the submit deadline. File modification dates will be checked.
| Percent | Requirement |
| 5% | M1: Candidate classes, methods, use cases from P06. |
| 5% | M2: Complete design. |
| 5% | M3: Code submitted that passes appropriate test cases. |
| 55% | M4: Code now plays a legal game with the provided user interface, as
outlined above. This includes being able to initialize a game from a file.
|
| 30% | Other Enhancements. |
| 10% bonus | Bonus Enhancements and/or participation in the Show and Tell. |
Remember that groups of 4 must do an extra 15% of enhancements!
| 2.0% | Demonstrated their program |
| 5.0% | Third place finish |
| 7.0% | Second place finish |
| 10.0% | First place finish |
In the normal practicum meeting time for Practicum 12 there will be a Show and Tell where each team has 3 minutes to show off their creation. All class members from that section (but not course staff) will be eligible to vote for the best program based on the demonstrations. Teams will recieve bonus marks on top of their existing project mark. How many bonus marks given are shown on the right. In no case will a team receive a mark larger than 110%.
Think ahead about what you should stress; what sets your program apart? Plan how you will show off your program. For instance, if strategy is your forte, have an initialization file ready to go which will show your strategy in action. If you have a really cool end-of-game announcement, have an initialization file for a game that is very nearly finished.