IMGD 4000 - Project 2

Shallow Blue

Top | Description | Notes | Links | Submission | Grading

Due date: Friday, April 6, by 11:59pm

This is the second of three projects to build an online chess game. This project focuses on building a computer opponent, named Shallow Blue (not to be confused with Deep Blue). Shallow Blue is an artificially intelligent chess player that knows the rules of chess and should play a reasonable game. The last and final project, project 3, will develop the online component (Networking) for the Chess Board and Shallow Blue.

Note: As for the first project, this project is to be done individually! You are not to work in groups of any kind. You are encouraged to talk about solutions with your class mates and can even help each other debug code. However, cutting and pasting and mailing code to each other is not allowed.

You are encouraged to build upon your first project, the Chess Board. If your first project really did not go well, contact the instructor for how to proceed.


Description

You are to make a computer-controlled chess opponent, called Shallow Blue, for your chess game. Shallow Blue and the player should play a game using the Chess Board developed for project 1.

The game should support:

You will use a MinMax search algorithm produce a move. The algorithm will have AlphaBeta pruning and a board evaluation. See the lecture notes from class for more details.


Notes

To implement a "dumber" Blue, consider:

Do the reverse for a "smarter" Blue.

If there are choices that have equal value (for example, in an opening), you should "roll a die" to see which choice Blue makes.

For different personalities, consider different board evaluation strategies (ie- assigning more weights for an exchange in pieces in some cases, and less in others).

For opening and end-game, consider having separate phases and, again, the board evaluation may be different in these cases.

As for the first project, you are free to implement your game in your choice of language (C, C++, Java, ...). You should use a language you are familiar with as you don't want to spend too much of your development effort fighting with the language.


Links

There are lots of links on MinMax trees, some specifically for chess. Here are a few:

  • Min-Max search
  • Introduction to min-max search (a presentation)
  • The Minimax Wiki

    Evaluating a board in Chess, as part of the MinMax tree, is quite important. Here are some relevant links:

  • Keys to Evaluating Positions
  • Chess Programming - Evaluation Functions
  • GNU Chess' heuristics

    The chess links from project 1.


    Submission

    All assignments are to be submitted electronically via turnin by 11:59pm on the day the assignment is due. Turnin of code should include all the support files to allow your game to be built, along with detailed instructions on platform, libraries, etc. In particular, include a README that describes the features relevant to the grading guidelines that are implemented.

    The easiest way to submit your game is to zip the files, including the sub-directory. For ease of grading, call the sub-directory your_last_name-proj2 (ie- claypool-proj2), creating a proj2.zip file.

    You will need to upload the file you are turning in to your CCC account on one of the CCC machines (ccc1 to ccc10). While logged into a CCC machine, you will need to enter the directory where these files are stored and execute the following:

    
      /cs/bin/turnin submit <course> <assignment> <file1> <file2> ...
    
    

    where in our case, <course> is imgd4000, <assignment> is project2, and <file1>, etc. are the files to be turned in. So for example, you might enter:

    
      /cs/bin/turnin submit imgd4000 project2 proj2.zip
    
    

    Following this, you should verify that your files have been entered into turnin by executing the following command:

      /cs/bin/turnin verify imgd4000 project2
    


    Grading

    Grading Guidelines
    Basic Game 65% Plays basic chess game, with "smart" legal moves (using MinMax algorithm).
    Pruning 10% AlphaBeta pruning implemented.
    Levels of Difficulty 5% At least easy, medium and hard.
    Controlled Think Time 5% Means to limit think time, either literally by a clock or by limiting depth search when there are many choices.
    Sophisticated Evaluation 5% In addition to pieces, consider king safety, mobility, pawn placement, ...
    Opening and End-game 5% Separate consideration for opening moves and end-game state.
    Style 5% Consideration of different personalities (ie- aggressive, or defensive or ...)

    Top | Description | Notes | Links | Submission | Grading

    Return to the 4000 Home Page

    Send all project questions to the TA mailing list (imgd4000-ta at cs.wpi.edu).