Program 4: Gomoku Tournament
Results
- First Place: Cassie Reynolds and Ben Sauskojus.
Here are their white.l and
black.l entries.
- Second Place: Sheldon Ross and Russell Tempero.
- Third Place (Tie): William Hosbein and Chris Rossmith,
David Wax and Ray Weber
Due Date
This assignment is due at the beginning of
the lecture on Friday, December 7th. No late days can be used
on this assignment, due to the fact that we will be holding
a tournament among the programs in EPS 254 that day.
Partners
Everyone is required to complete this assignment with one partner.
Submit one solution with both of your names on it.
Purpose
The purpose of this assignment is to give you experience
incorporating AI game-playing techniques into a program that
plays gomoku. The game will be played on a 15 by 15
board. In the event of a tie (see below), a tiebreaker will be
played on an n by n board of undisclosed size.
Requirements
- The referee program for the tournament is
driver.l.
Notice that there are two missing functions in
this file: white-get-move and black-get-move.
- Your white strategy should be implemented in a file named
white.l. All functions in this file should
be preceded with the prefix white-.
- Your black strategy should be implemented in a file named
black.l. All functions in this file should
be preceded with the prefix black-.
- The white-get-move and black-get-move functions should
generally be able to return a move using 1 second or less of CPU time
(Run time) .
- No cheating! I have tried to make the driver program fairly bullet
proof, but in the event that I have overlooked something, please do not take
advantage of any flaws.
The Tournament
The tournament will be held during the class period on Friday,
December 7th in EPS 254. If your program is scheduled to play another
team's program, you will play two games: once as the white player
and once as the black player. The white player always moves first.
A game should proceed as follows:
- Invoke clisp
- Load the compiled version of the black player
- Load the compiled version of the white player
- Load the compiled version of the driver
- Type (driver)
Write down the outcome of each game and how many moves this outcome
took to reach. Report the outcome of each game to John. If one program
makes an illegal play or consistently takes too long to move, the other
program receives a forfeit and is declared the winner. Otherwise,
one of three things can occur:
- One player wins both games. In this case, the winner is clear.
- Each player wins one game. In this case, whoever wins in fewer moves
is the winner.
- There is a tie. In this case, if time permits, you will be asked
to play two more games with a different board size to see if a winner
can be determined. If this still results in a tie, a tie will be
declared.
What to Submit
The following materials must be
received no later than Friday, December 7th at 12:00 noon.
- A printout (not an e-mail) of the white.l file.
- A printout (not an e-mail) of the black.l file, but only
if this file uses a significantly different strategy than the
white.l file.
- An e-mail of the white.l and black.l files to John at
paxton@cs.montana.edu
Grading
- 50%. Performance in the tournament.
- 30%. The quality of the strategy. At the top of the program,
you should provide a high level overview comment that describes
the strategy that is used by your program to play gomoku.
If your program performs well, describing the strategy
clearly and accurately will score full marks. Otherwise,
I will look at the sophistication of the game playing techniques
that you are using such as minimax, alpha-beta pruning, the
evaluation function, etc.
- 10%. The quality of the solution. Does your solution use
Common Lisp appropriately? Does the solution avoid duplicated
code? Is the solution elegant? Is the solution easy to
read and maintain? etc.
- 10%. The files compile with no errors and no
warnings. The solution is commented appropriately.