Develop a program that plays connect-four. The game is played on an infinite grid. The players (``X'' and ``O'') take turns placing their pieces on the grid, with ``X'' always going first. The pieces are ``dropped'' into place from the top, so that pieces become stacked on top of each other as in the example below. The player that gets four of his/her/its pieces in a row (or column or diagonal) wins. A possible final state of the game in which player 2 has won is:
  |   |   |   |   |   |   |   |   |   |
---|---|---|---|---|---|---|---|---|---|
  |   |   |   |   |   |   |   |   |   |
  |   |   |   |   |   | X | O |   |   |
  |   |   |   | O | O | O | X |   |   |
  |   |   | O | X | X | O | X | O |   |
  |   | X | O | O | X | O | X | X |   |
  |   | X | O | O | O | X | O | O |   |
  |   | O | X | X | X | O | O | X |   |
  |   | X | X | O | X | O | X | X |   |
  |   | O | X | O | X | X | X | O |   |
  |   | X | O | X | O | O | O | X |   |
(compete ``xxx'' ``xxx'')
where ``xxx'' is your name).
We'll play a tournament, and the top programs win valuable prizes!!
(like extra points for their creator). The format of the user interface
is described in
/u/risto/public/cs381k/hw1/interface-specs.ps , and the source code
for the crucial parts is in
/u/risto/public/cs381k/hw1/interface.lsp .
Your program should be able to display the state of the game after each move, and also explain what strategies, book moves, etc. it is considering. Turn in some log output explaining how the program works, but turn off logging routine calls when you turn in your program for the tournament.
IMPORTANT: Submit a well-written report describing how the program works, what you learned about game playing, what the major problems are for your program, and what ideas you have on how to make it play better.