CS347 SP2005 Chess: Phase III - Time-Limited Iterative-Deepening Minimax

Revision 1/12/2005. Note: it is the students' responsibility to check the CS347 website for possible new revisions!

Assignment

Chess is a two-person zero-sum game well-known to most of you (if not, search the web and you will find more than you ever wanted to know about chess! For all kinds of information on programming chess, see the GTA's collection of links at http://web.umr.edu/~cs347a/sp2005/chess/.

For the chess assignments we'll be using the XBoard/WinBoard for the GUI and a simplified version of Cassandre as a base for our programs. You can download the simplified version of Cassandre for either Windows (WinCassandre.zip) or Unix (UnixCassandre.tar.gz). Cassandre utilizes a Engine class to encapsulate the chess engine. The play() function in Engine.cpp is where plays are actually made. Cassandre also implements the popular "bitboard" representation for the chess board. Be sure to take a look through the bitboard references at the bottom of the chess page (http://web.umr.edu/~cs347a/sp2005/chess/).

In this third phase you'll need to fill in the play function in the provided framework to play a legal game employing Time-Limited Iterative-Deepening Minimax (TLIDM) with the depth limit specified by the maxDepth member of the Engine class. The order in which moves are expanded in this phase must be randomized to a certain degree. Rather than calling generateMoves(), you may wish to use the following basic strategy:

  1. call generateCaptureMoves() and randomize the results
  2. call generateNonCaptureMoves() and randomize the results
  3. Append the second list to the first
(See page 169 in the text for the reasoning)
TLIDM requires a State Evaluation Heuristic and you are to provide one that takes at least two strategic or tactical measures into account (e.g., material advantage, position of pieces, pawn structure, etc.). Also, your evaluation function needs to handle Win/Loss/Draw situations and work correctly when playing either black or white.

Note: this is an individual project; plagiarism of any type will result in a zero grade.

Grading

The maximum number of points you can get is 100, the minimal is 0. The following are the maximum number of points per component:

Multiple Submissions and Late Submissions

While it is hoped that all code will be submitted error-free and on time, this may not always be the case, so the following rules apply if code is not submitted error-free or on time: