CS242: Advanced Programming Concepts in JAVA

Fall 2010

Program 4

Due: 2:00 PM, Wednesday, 9/29/10

This assignment builds on Program 3. Your system should be organized as follows:

  1. A package named games. In the package are these types (a type is a class or interface):

    1. A class named Game. This is an abstract class that can be extended to create classes for specific games that are played on a square board, like checkers, chess, and tic-tac-toe. The Game class has one instance variable that is an object in the Board class. Its methods should be public, but its instance of Board should be default. If it has any other instance variables, they should be private.

    2. An interface named Moves. It specifies the methods that are to be implemented by the Board class.

    3. A class named Board that implements Moves. You should be able to use the Board class from the previous assignment with some changes. The Board class and its methods are public, but its variables should be private. In particular, it has an nXn array that represents the game board, and it must be private. The main modifications that you have to make are to allow game pieces of different kinds. For example, in checkers, pieces can be red or black, and they can be regular checkers pieces or kings, giving a total of four kinds of pieces. (You don't need to know what these mean to do this assignment.) Each kind of piece is identified by a unique code. Squares on the game board can be unoccupied or occupied by a single piece of some kind. Use the following codes to indicate the occupancy of a square:
      0: unoccupied
      1: red checker
      2: black checker
      3: red king
      4: black king

    4. A class named Checkers, which must be a direct subclass of Game. The Checkers class and its methods should be public, but its variables should be private.

  2. A class named TestCheckers containing a main program that thoroughly tests the Checkers and Board classes. TestCheckers should not be in the package games.

The classes Game, Board and Checkers must satisfy the interfaces given below; that is, you are not free to change the name, type, or behavior of the given methods.

Your grade will be based on how well you design and implement the code (including whether you followed the directions in 1.1., 1.2, 1.3, 1.4, and 2. above), on good programming practices, and on thorough testing. Coding guidelines for Java programs are posted here.

Class Game describes objects that implement a game on an nXn game board.

Game

Game(int n)

Game(final Game agame)

abstract void display()

Interface Moves lists the access and mutator methods for the game board.

Moves

void remove(int row, int col)

void place(int piece, int row, int col)

int show(int row, int col)

Class Board contains the nXn game board and its access and mutator methods.

Board

Board(int n)

Board(final Board oldboard)

void remove(int row, int col)

void place(int piece, int row, int col)

int show(int row, int col)

Class Checkers is an extension of Game that implements a checkers game.

Checkers

Checkers()

Checkers(final Checkers game)

void remove(int row, int col)

void place(int piece, int row, int col)

int show(int row, int col)

void move(int fromrow, int fromcol, int torow, int tocol)

void display()

The main method in TestCheckers should create several instances of Checkers and demonstrate the functionality of the methods in the Checkers class. This time, error handling does not need to be considered.

Add comment documentation to your program (all four classes) and use javadoc to extract the documentation into an HTML file. Include a javadoc comment for each class and each method. The class comment should include your name and the date (use the @author tag). Method comments should briefly describe the purpose of the method, its arguments, and what, if anything, it returns (using @param and @return as appropriate).

The physical location of the javadoc comments is critical. A class comment must immediately precede the line containing the keyword class, and method comments must immediately precede the method.

When you have commented your source files, run javadoc to create the .html files and view them in a browser of your choice.


What to submit:


Your grade on the program will be based on: