9 changed files with 147 additions and 73 deletions
@ -0,0 +1,66 @@ |
|||
(in-package :board) |
|||
|
|||
|
|||
|
|||
|
|||
(defun make-2d-board (size &optional (initial nil)) |
|||
(let ((array (make-array size))) |
|||
(dotimes (i size) |
|||
(setf (aref array i) (make-array size :initial-element initial))) |
|||
array)) |
|||
|
|||
(defun copy-2d-board (board) |
|||
(let ((copy (make-array (length board)))) |
|||
(dotimes (i (length board)) |
|||
(setf (aref copy i) (copy-seq (aref board i)))) |
|||
copy)) |
|||
|
|||
|
|||
|
|||
|
|||
(defun filter-i-number (number) |
|||
(if (> number 8) |
|||
(1- number) |
|||
number)) |
|||
|
|||
(defun str-to-coord (str) |
|||
`( ,(filter-i-number (- (char-code (char (string-upcase str) 0)) 65)) ,(- (parse-integer (subseq str 1)) 1))) |
|||
|
|||
(defun filter-i-char (number) |
|||
(if (>= number 8) |
|||
(1+ number) |
|||
number)) |
|||
|
|||
(defun coord-to-str (coord) |
|||
(concatenate 'string (string (code-char (+ 65 (filter-i-char (first coord))))) |
|||
(write-to-string (+ (second coord) 1)))) |
|||
|
|||
|
|||
|
|||
(defun get-stone (board coord) |
|||
(aref (aref board (first coord)) (second coord))) |
|||
|
|||
(defun set-stone (board coord val) |
|||
(setf (aref (aref board (first coord)) (second coord)) val)) |
|||
|
|||
|
|||
|
|||
(defclass board () |
|||
((boardsize |
|||
:initarg boardsize |
|||
; :initform *boardsize* |
|||
:accessor boardsize) |
|||
(board-def-type |
|||
:initarg board-def-type |
|||
:initform nil |
|||
:accessor board-def-type) |
|||
(board |
|||
:accessor board))) |
|||
|
|||
(defmethod initialize-instance :after ((board board) &key (from-board nil)) |
|||
(if (eql from-board nil) |
|||
(setf (board-def-type board) (make-board (boardsize board) (board-def-type board))) |
|||
(progn |
|||
(setf (boardsize board) (boardsize from-board)) |
|||
(setf (board-def-type board) (board-def-type from-board)) |
|||
(setf (board board) (copy-2d-board (board from-board)))))) |
@ -0,0 +1,9 @@ |
|||
(in-package :common-lisp) |
|||
|
|||
(defparameter *src-root* "/home/dan/src/my/gobot/") |
|||
|
|||
(load (concatenate 'string *src-root* "packages.fasl")) |
|||
(load (concatenate 'string *src-root* "netpipe.fasl")) |
|||
(load (concatenate 'string *src-root* "board.fasl")) |
|||
(load (concatenate 'string *src-root* "gobot.fasl")) |
|||
(load (concatenate 'string *src-root* "gtp.fasl")) |
@ -1,4 +1,7 @@ |
|||
#!/bin/sh |
|||
#echo $1 $2 |
|||
/usr/bin/sbcl --noinform --load /home/dan/src/my/gobot/packages.fasl --load /home/dan/src/my/gobot/gobot.fasl /home/dan/src/my/gobot/gtp.fasl --eval "(progn (gtp-handler:gtp-net-client \"$1\" $2) (quit))" 2>&1 /dev/null |
|||
#/usr/bin/sbcl --noinform --load /home/dan/src/my/gobot/packages.lisp --load /home/dan/src/my/gobot/gobot.lisp /home/dan/src/my/gobot/gtp.lisp --eval "(progn (gtp-handler:gtp-net-client \"$1\" $2) (quit))" 2>&1 /dev/null |
|||
|
|||
/usr/bin/sbcl --noinform --load /home/dan/src/my/gobot/fink.lisp --eval "(progn (gtp-handler:gtp-net-client \"$1\" $2) (quit))" |
|||
|
|||
#/usr/bin/sbcl --noinform --load /home/dan/src/my/gobot/env.lisp --eval "(progn (gtp-handler:gtp-client) (quit))" |
|||
|
@ -0,0 +1,41 @@ |
|||
(in-package :netpipe) |
|||
|
|||
(defun nslookup (hostname) |
|||
"Performs a DNS look up for HOSTNAME and returns the address as a |
|||
four element array, suitable for socket-connect. If HOSTNAME is |
|||
not found, a host-not-found-error condition is thrown." |
|||
(if hostname |
|||
(sb-bsd-sockets:host-ent-address (sb-bsd-sockets:get-host-by-name hostname)) |
|||
nil)) |
|||
|
|||
(defun tcp-connect (server port); &optional (timeout 10)) |
|||
(handler-case |
|||
(let ((socket (make-instance 'sb-bsd-sockets:inet-socket :type :stream :protocol :tcp))) |
|||
(sb-bsd-sockets:socket-connect socket (nslookup server) port) |
|||
socket) |
|||
(sb-bsd-sockets:CONNECTION-REFUSED-ERROR () |
|||
(progn |
|||
(format t "Error: Connection refused~%") |
|||
nil)))) |
|||
|
|||
|
|||
(defun tcp-print-raw (socket line) |
|||
(when (and socket line) |
|||
(sb-bsd-sockets:socket-send socket line nil))) |
|||
|
|||
(defun tcp-print (socket line) |
|||
(tcp-print-raw socket (concatenate 'string (format nil "~04d" (length line)) line))) |
|||
|
|||
(defun tcp-read-raw (socket &key (maxsize 65536)); (timeout 10)) |
|||
(when socket |
|||
(values (sb-bsd-sockets:socket-receive socket nil maxsize)))) |
|||
|
|||
;(if-timeout (timeout (format t "socket-receive timed out after ~A seconds.~%" timeout) (force-output) nil) |
|||
|
|||
(defun tcp-read (socket &key (timeout 10)) |
|||
(when socket |
|||
(let ((len (parse-integer (tcp-read-raw socket :maxsize 4 :timeout timeout)))) |
|||
(tcp-read-raw socket :maxsize len :timeout timeout)))) |
|||
|
|||
|
|||
|
Loading…
Reference in new issue