Я зациклился на том, как это реализовать.Clojure: каждый кадр, читайте ввод пользователя, если он доступен. вход передается в цикл, может быть либо lazy-seq of (reapeatedly (readline)), либо предопределенный список
Концепция является то, что я хочу:
- , чтобы быть в состоянии позволить обновление игры уже введенную ли или нет игрок ввода, но использовать вход, если он доступен
- иметь возможность легко менять вне входа пользователя с предопределенной последовательностью для целей тестирования.
Это сломанный реализация я в настоящее время:
(defn game
"Runs the simplified version of the main game"
[world user-input-machine]
(let [input [first (deref user-input-machine 10 nil)]]
(if (not= input "QUIT")
(do (println input) ; do game logic stuff
(game world (rest (deref user-input-machine)))) ;repeat
world)))
Идея заключалась в том, чтобы передать что-то вроде
(future (repeatedly(readline)))
или
(future (["hello", "world", "QUIT"]))
В качестве входных данных. Реализация неверна по ряду причин. Я только начинаю с clojure, и это моя первая попытка использовать фьючерсы/задержки/обещания и т. Д. Может ли кто-нибудь помочь мне?
Я пришел через несколько взаимосвязанных вопросов, которые не совсем ответили, что им ищет (я даже не знаю, как сформулировать запрос):