COMP 303 Fall 2010
$Revision: 1.2 $ $Date: 2010/08/30 16:10:02 $
For the term project, we will design, implement, and test a complete
version of the game of Hearts. The
goal of the project is to give you hands-on experience in developing a
quality software product using advanced object-oriented concepts and
state-of-the-art software engineering tools.
Hearts is a trick-taking game played with a deck of 52 cards. The
goal of the game is to win as few tricks as possible. Taking
tricks gives player points, and the player with the lowest score wins.
We will use this
page as the official specification of the rules of the game. When
precisions are required, they will be provided in milestone assignments.
Our implementation of the game will pit a human player against a
sampler of computer players of various synthetic abilities.
Don't worry if you have never played Hearts before. In-depth
knowledge of gaming strategies is not necessary to complete the
project. A summary of the basics of the game and hints about
strategies will be covered in class.
Figure 1 shows the architecture for the project. Your final design
will be required to follow this architecture. The robots
package will implement the behavior of the computer player(s). The
model package will group all the classes necessary to maintain
the status of the game and carry out actions related to the game.
Finally, the gui package will contain all the classes required
to implement the user interface. An additional util package
contains the utility classes.
Figure 1. Software architecture for the project
The project will follow a simple development process consisting of
four milestones. A milestone is a coherent set of deliverables
that form a working (but not necessarily complete) version of the product.
Producing all four milestones will involve a significant amount of
programming, including bonus requirements. Information on each
project part will be posted on the website during the term. Here's an
overview of each part.
Milestone 0: Project Setup
This part of the project will involve setting up your environment,
installing the utility classes, studying their implementation, and
experimenting with the unit testing framework. There is no
deliverable associated with this part.
Milestone 1: Basic model and robots Packages
The first part will involve the development and testing of all the
logic required to manage a hand and the implementation of a basic
computer player. The deliverable for this part will include your
implementation and test cases.
Milestone 2: Complete model and robot packages In this part
you will finish the functionality to store and manage the state of the
game, and the functionality of at least two different computer
players. This part will require you to expand Milestone 1. The
deliverable for this part will include your implementation, test
cases, and a design document.
Milestone 3: GUI and Release
In this part you will implement the Graphical User Interface for the
game and integrate it with the rest of the project. The deliverable for this
part will be the complete software product, and a design document.
Teams The project will be done in teams of four
(except if the only alternative is to divide a student in parts). All
team members will be jointly responsible for the entire project, and
for reaching the learning objectives of the project. Students will be
responsible for forming their own team (with help from the instructor
Except for the source code explicitly provided on
the course website, each team must author the entire code of their
project. In particular, snippets of code cannot be reused
from the other game implementations you can easily find on the
Internet. Exception: A maximum of 15% (of uncommented lines of
code) of the GUI package can be borrowed from other sources if the
license allows it. This code must clearly be identified with
acknowledgments to the initial author(s). The authors cannot be
current or past COMP 303 students. Note that we may run
software analysis tools on your code.
McGill University values academic integrity. Therefore all students
must understand the meaning and consequences of cheating, plagiarism
and other academic offenses under the Code of Student Conduct and
Disciplinary Procedures (see http://www.mcgill.ca/integrity
for more information).