function - 如何在 lisp 中使用 do?

标签 function lisp common-lisp

我想做的是编写一个函数,该函数将在结束后重新开始井字游戏。 应该发生的是玩家将被询问是否想玩另一场比赛。如果他们这样做,则他们单击是,并调用一个函数来重新开始游戏。如果他们选择否,则程序终止。 这是我到目前为止所拥有的...

(defun play-again ()
  (do (y-or-n-p "Would you like to play again? ")
      ((play-one-game) nil)))

玩一个游戏是我想在用户从提示中单击"is"时运行的功能。否则游戏终止,因为没有其他函数被调用。顺便说一句,以防万一你需要知道,我正在使用 Allegro。

最佳答案

假设你的 y-or-n-p 只有当用户按下 n 时你才可以将你的主循环写成

(defun main ()
  (loop :while (y-or-n-p "Would you like to play again? ")
        :do (play-one-game)))

或者在我将重命名为 play 的 play-one-game 结束时,提示用户,如果他想再次玩,只需再调用一次 play 即可。

(defun play-one-game ()
  ....
  (when (y-or-n-p "Would you like to play again? ")
    (play-one-game)))

关于function - 如何在 lisp 中使用 do?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28996381/

相关文章:

javascript - 日期中的自动点 - 在两个函数之间传递值还是其他函数?

javascript - 如何访问 Selenium 中的javascript结果

list - LISP:按升序排列列表项

lisp - 我可以在 Clisp 中保存源文件吗?

types - 在 Common Lisp 中使用 `satisfies` 和 `and`

mysql - SBCL 中的 clsql 问题

function - 函数可以返回不是 lambda 的函数吗?

function - 函数返回的常量是否自动成为指定返回变量的值

emacs - 在 Slime 中复制/复制整个 Lisp 形式

regex - 如何使用变量作为正则表达式值?