Хорошо, поэтому я закончил с моим последним проектом, (правда, не очень хорошая) реализация Tic Tac Toe в Common Lisp (вся доступная программа here), но Я застрял на последней части; Я не могу понять, как получить мою функцию, которая проверяет работу победителя. Функция (и его подчиненные функция) выглядят следующим образом:Проверка на победу в Tic-Tac-Toe
(defun check-for-win()
(cond ((is-line 1 2 3) t)
((is-line 1 4 7) t)
((is-line 1 5 9) t)
((is-line 2 5 8) t)
((is-line 3 6 9) t)
((is-line 3 5 7) t)
((is-line 4 5 6) t)
((is-line 7 8 9) t))
nil)
(defun is-line (a b c)
(let ((a (aref *board* (- a 1)))
(b (aref *board* (- b 1)))
(c (aref *board* (- c 1))))
(if (and
(eql a b)
(eql a c)
(eql b c))
t
nil)))
(хотя и не отступ так глубоко), и в (is-line)
, а, б и будет (в выигрышной ситуации) устанавливается на символ (или :X
или :O
). Как я могу получить проверки равенства?
Это работает, если вы помещаете круглые скобки вокруг ': else nil'. Благодаря! – Andy
Да, извините, исправлено. – ffriend