COMP 303 Fall 2007
Project Overview
For the term project, we will design, implement, and test a complete
version of the 5-card draw variant of poker. The goal of the project is to give you
hands-on experience in developing a quality software product
using advanced OOP features and state-of-the-art software engineering
tools.
Application Domain
Poker is a gambling game played with a 52-card deck. There are
numerous different variants of the game. For this project we will implement the simplest:
five-card draw with four players.
This variant can be summarized as follows
- Each player pays the ante (a small sum of money to the pot)
- Each player is dealt a hand of five cards. Players hope to make the best hand. The strength of
a hand is determined through very specific rules (see below).
- There is a round of bidding.
- Each player is allowed to exchange at most three cards from his hand.
- There is another round of bidding.
- There is a showdown among whoever is left in the game.
For more detailed explanations, see this website.
We will use this
site as the official specification of the ranking of hands.
In addition, our implementation of the game will pit a human player against the
computer.
Finally, don't worry if you have never played poker before. In-depth knowledge of poker strategies is not necessary to complete the project, and
a summary of the basics of the game will be covered in class.
Project Architecture
Figure 1 shows the architecture for the project. Your design will be
required to follow this architecture. The Scoring
package will comprise all the functionality needed to automatically rank poker hands. The Game package
will group all the classes necessary to maintain the status of the
game and carry out actions related to the game. The AI package
will implement the behavior of the computer player. Finally, the
UI package will contain all the classes required to implement
the user interface. An additional package containing useful utility classes
will be provided (not shown).

Figure 1. Software architecture for the project
Organization
The project will follow a very simple development process consisting of four milestones. A milestone is
a coherent set of deliverables that form a working (but incomplete) 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: Scoring Modules
The first part will involve the development and testing of the
scoring module based on standard interfaces that will be
provided. The deliverable for this part will include your
implementation and test cases.
Milestone 2: Game Module
In this part you will implement a module to store and manage the state
of the game. 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: AI Module
For this milestone you will expand the game module with the functionality required to
support computer players. The deliverable for this part will include your
implementation, test cases, and a design document.
Milestone 4: UI 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 two. Both 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.
Academic Integrity
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 crib implementations you can easily find on the Internet.
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).
$Revision: 1.3 $ Last Modified: $Date: 2007/09/07 14:43:11 $