私はClojureを学ぼうとしています。私は子供のゲーム "シュートとはしご"の非常に基本的なモデルを作った。プレーヤーが100点以上のスコアを取得した場合、ゲームは終了します。 これはプレイヤーだけにしか機能しません。クロージャのルーピング/再帰
"(プレイプレーヤー1)"でゲームを開始します。
私は、それがマルチプレイヤーになることに固執しています。リキュールと "foreach"ステートメントを使用しないでください。
これをマルチプレーヤーに変更するにはどうすればよいですか?
(defn roll []
(+ 1 (rand-int 6)))
(def chutes { 10 5, 12 3, 55 38, 77 69})
(def ladders { 12 16, 10 25, 20 55, 77 91})
(defn apply_chutes [player]
(if (contains? chutes @player)
(do (reset! player (chutes @player))
(println "down chute! " @player))))
(defn apply_ladders [player]
(if (contains? ladders @player)
(do (reset! player (ladders @player))
(println "up ladder! " @player))))
(defn move [player]
(do(swap! player + (roll))
(println "p: " @player)
(apply_chutes player)
(apply_ladders player)
player))
(if
("done")))
(defn play [player]
(move player)
(if (>= @player 100)
(println "done")
(play player)))
(def player1 (atom 0))
Clojure、再帰、またはゲームデザインについて質問していますか?あなたの質問を正確にし、正確な問題を記述してください。 – ffriend
実際のゲームのデザインではありませんが、私は何らかのプログラミングのヒントを教えていただければ幸いです。私はこの作業を複数のプレイヤーにする方法を知りたいですが、最初のプレーヤーが100を破ると停止します。選手。私は、dosqや高次関数マップのようなものを使うべきだと思いますが、ゲーム終了時にどのようにプレイヤーのシーケンスを繰り返すのをやめますか?私は再帰を使用して、毎回別のプレイヤーの "再生"機能を呼び出す必要がありますか?それはいくつかの助けになるのか?私はそれが本当の具体的ではないことを知っている。 –