Here's your chance to see how good your Quixo program plays, by seeing if it can beat Kenrick's. As a minimum, your program should be able to play competitively against humans. My program (squisho) doesn't do anything fancy, so most likely there will be programs in the class that will beat this one. So if your program can beat squisho, say the version looking ahead 4 moves, then you are probably in pretty good shape to be competitive. Conversely, if your program loses to the version of squisho looking ahead 2 moves, then you might want to re-evaluate your heuristics.
Important Note: Your grade in no way reflects how well your program plays. Your program can lose every game but your group still get a perfect score. However, your grade will reflect whether or not your program works, and that search, heuristics, move generator, board update, etc., all function properly. For example, a program that crashes or makes illegal moves or has incorrectly implemented minimax may be subject to points off.
To try squisho, build the binary and view the README file.
Squisho ReadMe File
This directory contains some sample Quixo game-playing programs that you can use to test your own programs against. Enclosed are the following binaries that run on a sparc system (e.g., sirius): quixo - Game Manager by IDR dumb - Dumb program that makes random moves, by IDR squisho2 - 2 move lookahead gameplaying program squisho4 - 4 move lookahead gameplaying program squisho6 - 6 move lookahead gameplaying program No source is included, since you are to write yoru own programs! Also, no timer has been implemented, as these programs are included for testing purposes. Usage examples: quixo - squisho2 : human X vs. computer O, 2 move lookahead quixo dumb squisho2 : dumb computer X vs. computer O, 2 move lookahead quixo squisho2 squisho4 : computer 2 move X vs. computer 4 move O quixo squisho6 - : computer 6 move X vs. human O You will probably want to use 4 move lookahead most of the time, as 6 move lookahead can take up to a minute per move, depending on the board layout and the load (comment: actually faster on my P6!). The program uses minimax with alpha-beta pruning, and no special techniques for eliminating moves or pruning the search space. The heuristic is simple and essentially counts the number of pieces in a row. If you play some games, you'll notice that the deep-lookahead program always beats the shallower-lookahead program, no matter who moves first. In theory, the implementation of squisho for the computer player should not make moves that result in previous board states, although this hasn't been tested in much detail. Most likely, your programs will also have to implement something along these lines so that all games do not end in ties. If you find any bugs, please email firstname.lastname@example.org.