Comp 212 Project #4: Design Patterns For Games

This project is not about Tic-Tac-Toe nor Othello.  As explained in the lecture, it uses a 2-person game design as a vehicle to learn BIGGER concepts in computing:

In this project, you will be given a big chunk of a 2-person board game framework and asked to write a few of its components, plug them in and obtain a program that can run Tic-Tac-Toe and Othello with different types of players, human and/or computer, using a variety of strategies to compute the next move while playing the games.  See the on-line demo!!  (You are not allowed to reverse engineer the demo to do your project).

The given game framework abstracts and decouples the different components in a game and specifies them in terms of interfaces with only pure abstract behaviors.  For example, the rules of a game is abstracted and encapsulated in an interface called IBoardModelABoardModel is a specific implementation of this interface using the state pattern.  Playing a particular board game is a matter of writing a concrete subclass of ABoardModel and plug it into the framework.  Nothing in the framework is changed!


Pair Programming

You are allowed and strongly encouraged to work in teams of at most 2 people.  Teams of size greater than two will need special authorization from either of the instructors of the course.

Resources

Othello Game rules: From Pressman Games, the manufacturer
Web page of an Othello fanatic: http://www.maths.nott.ac.uk/othello/othello.html

The project is divided into two milestones.

Milestone #1: due 10:00 AM, Friday, April 19, 2002- 30%

The goal of milestone one is to help you familiarize with the overall design of the game framework by focusing on the game model, which encapsulates:

The game model is represented by a class called GameModelGameModel Docs describes its design in UML and javadoc.

In this milestone, you are to:

To compile your code, type the following from the default package directory:

javac -classpath .:game4two.jar model/GameModel.java

To run your code, type the following from the default package directory:

java -classpath .:game4two.jar controller.TicTacToeApp

Submission instructions:
To turn in Milestone 1, log on to an owlnet machine and type:
turnin -c comp212 -p game1 mydir
where mydir is the directory containing the files you wish to turn in.
Note: mydir should not contain a trailing /


Milestone #2: due 11:59 PM, Friday, April 26, 2002 - 70%

Implement the Tic-Tac-Toe board model.

Implement MinMax principle.

Implement Alpha-Beta pruning strategy.

Implement Depth-limited search strategy.

Use the user ID of one of the team members as the package name for all of the above strategies.

See the Hints on INextMoveStrategies page!

Submission instructions:
To turn in Milestone 2, log on to an owlnet machine and type:
turnin -c comp212 -p game2 mydir
where mydir is the directory containing the files you wish to turn in.
Note: mydir should not contain a trailing /


Othello Tournament

During the week of the final, we will hold a tournament to select a new Othello champion.  Participation is totally optional. 

We will announce the tournament rules later.  One key rule is for you to use your user id as the package name for your best Othello next move strategy.


Tips and Traps

In no particular order...