CS347 SP2005 Chess: Phase II - Depth-Limited 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 second phase you'll need to fill in the play function in the provided framework to play a legal game employing Depth Limited Minimax (DLM) with the depth limit specified by the maxDepth member of the Engine class. The order in which moves are generated is in this phase completely up to you, you can even choose whether you want to make it deterministic or stochastic. DLM requires a State Evaluation Heuristic and you are to provide one that takes at least one strategic or tactical measure into account (e.g., material advantage, position of pieces, pawn structure, etc.). Also, your evaluation function needs to handle Win/Loss/Draw situations. Finally, one more time you are reminded that in this phase and all subsequent phases your player must be capable of playing either color correctly!

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: