The web site for this package is http://reversi.b9.com which has
documentation for this package.
+Reversi is based on the Othello(tm) game presented in Peter Norvig's
+book "Paradigms of Artificial Intelligence Programming", chapter 18.
+I highly suggest this book in general. If you wish to take full
+advantage of this package, you should read the chapter referenced.
+
+Quickstart
+==========
+
+If you are using AllegroCL or Lispworks with CLIM, you can play
+Reversi with a graphical user interface using the command
+ (reversi:clim-reversi)
+
+Otherwise, you can play in a text mode, such as
+ (reversi:reversi #'reversi:human (reversi:iago 1))
+
+
;;;; Programer: Kevin Rosenberg based on code by Peter Norvig
;;;; Date Started: 1 Nov 2001
;;;;
-;;;; $Id: base.lisp,v 1.1 2002/10/25 12:42:42 kevin Exp $
+;;;; $Id: base.lisp,v 1.2 2002/10/25 13:09:11 kevin Exp $
;;;;
;;;; This file is Copyright (c) 2001-2002 by Kevin M. Rosenberg
;;;; and Copyright (c) 1998-2002 Peter Norvig
(count-difference black (board game)))
-
(defun reversi (bl-strategy wh-strategy
&optional (print t) (minutes +default-max-minutes+))
(play-game (make-game bl-strategy wh-strategy :print print
:record-game nil :minutes minutes)))
-
-#+ignore
-(defun reversi (bl-strategy wh-strategy
- &optional (print t) (minutes 30))
- "Play a game of reversi. Return the score, where a positive
- difference means black, the first player, wins."
- (let ((board (initial-board))
- (clock (make-clock minutes)))
- (declare (type board board))
- (catch 'game-over
- (loop for *move-number* from 1
- for player = black then (next-to-play board player print)
- for strategy = (if (eql player black)
- bl-strategy
- wh-strategy)
- until (null player)
- do (get-move nil strategy player board print clock))
- (when print
- (format t "~&The game is over. Final result:")
- (print-board board clock))
- (count-difference black board))))
-
(defvar *clock* (make-clock +default-max-minutes+) "A copy of the game clock")
(defvar *board* (initial-board) "A copy of the game board")
#!/bin/bash -e
-dup reversi -Uftp.med-info.com -D/home/ftp/reversi -C"(cd /opt/apache/htdocs/reversi.med-info.com; make install)" -su $*
+dup reversi -Uftp.med-info.com -D/home/ftp/reversi -C"(cd /opt/apache/htdocs/reversi; make install)" -su $*
;;;; Programer: Kevin M. Rosenberg
;;;; Date Started: 1 Nov 2001
;;;;
-;;;; $Id: io-clim.lisp,v 1.2 2002/10/25 09:23:39 kevin Exp $
+;;;; $Id: io-clim.lisp,v 1.3 2002/10/25 13:09:11 kevin Exp $
;;;;
;;;; This file is Copyright (c) 2001-2002 by Kevin M. Rosenberg
;;;;
#-(and os-threads microsoft-32)
nil))
-(defun g ()
- (greversi))
-
-(defun greversi ()
+(defun clim-reversi ()
(unless (or *force* (null *reversi-frame*))
(setq *reversi-frame* (make-application-frame 'reversi)))
(setq *reversi-frame* (run-frame 'reversi *reversi-frame*)))
;;;; Programer: Kevin M. Rosenberg
;;;; Date Started: 1 Nov 2001
;;;;
-;;;; $Id: package.lisp,v 1.2 2002/10/25 09:23:39 kevin Exp $
+;;;; $Id: package.lisp,v 1.3 2002/10/25 13:09:11 kevin Exp $
;;;;
;;;; This file is Copyright (c) 2001-2002 by Kevin M. Rosenberg
;;;;
;;;;***************************************************************************
-(in-package :cl-user)
+(in-package #:cl-user)
-(defpackage :reversi
- (:use :common-lisp :common-lisp-user
- #+clisp :ext
- #+clim :clim
- #+clim :clim-sys)
+(defpackage #:reversi
+ (:use #:common-lisp #:common-lisp-user
+ #+clisp #:ext
+ #+clim #:clim
+ #+clim #:clim-sys)
#+clim
(:shadowing-import-from :clim :pathname)
#+clim
(:shadowing-import-from :clim :interactive-stream-p)
#+clim
(:shadowing-import-from :clim :boolean)
+
(:export
#:reversi
#:random-reversi-series
#:count-difference
#:weighted-squares
#:modified-weighted-squares
- #+clim #:greversi
+
+ #:text-reversi
+ #+clim #:gui-reversi
))
;;;; Programer: Kevin Rosenberg based on code by Peter Norvig
;;;; Date Started: 1 Nov 2001
;;;;
-;;;; $Id: strategies.lisp,v 1.3 2002/10/25 12:39:15 kevin Exp $
+;;;; $Id: strategies.lisp,v 1.4 2002/10/25 13:09:11 kevin Exp $
;;;;
;;;; This file is Copyright (c) 2001-2002 by Kevin M. Rosenberg
;;;; and Copyright (c) 1998-2002 Peter Norvig
'(random ab3-df ab3-wt ab3-md-wt iago)))
+(defun text-reversi ()
+ "Sets up a text game between player and computer"
+ )