;;;; Programer: Kevin Rosenberg based on code by Peter Norvig
;;;; Date Started: 1 Nov 2001
;;;;
-;;;; $Id: base.lisp,v 1.4 2003/06/12 12:42:13 kevin Exp $
+;;;; $Id: base.lisp,v 1.6 2003/06/12 13:28:55 kevin Exp $
;;;;
;;;; This file is Copyright (c) 2001-2002 by Kevin M. Rosenberg
;;;; and Copyright (c) 1998-2002 Peter Norvig
:clock (make-clock +default-max-minutes+)))
-(defun name-of (piece) (char ".@O?" piece))
-(defun title-of (piece) (nth (1- piece) '("Black" "White")) )
+(defun name-of (piece) (schar ".@O?" piece))
+(defun title-of (piece)
+ (declare (fixnum piece))
+ (nth (the fixnum (1- piece)) '("Black" "White")) )
(defmacro opponent (player)
`(if (= ,player black) white black))
`(the piece (aref (the board ,board) (the square ,square))))
(defparameter all-squares
- (loop for i fixum from 11 to 88 when (<= 1 (mod i 10) 8) collect i)
+ (loop for i fixnum from 11 to 88
+ when (<= 1 (the fixnum (mod i 10)) 8)
+ collect i)
"A list of all squares")
(defun initial-board ()
(declare (type board board)
(type move move)
(type player player)
- (optimize speed (safety 0))
-)
+ (optimize speed (safety 0) (space 0)))
(if (= (bref board move) empty)
(block search
(let ((i 0))
(let ((c (+ move dir)))
(declare (type square c))
(and (= (the piece (bref board c)) (the player (opponent player)))
- (find-bracketing-piece (+ c dir) player board dir))))
+ (find-bracketing-piece (the fixnum (+ c dir)) player board dir))))
(defun find-bracketing-piece (square player board dir)
"Return the square number of the bracketing piece."