Haskellで数当てゲーム

Haskell

@lambdalisue さんにHaskellでシンプルなゲーム作って! と言われたのでゲームプログラム入門の定番、数当てゲームをつくってみましたー

これぐらいのサンプルだと遅延評価バリバリな感じでも良いのかもしれないけど、 ゲームプログラムを意識して再帰で書いております。

一番大事なのは data Game = の行ですね。 あとはオマケです。

import System.Random

-- ゲームってのは続けるかクリアか
-- 続けるときは答えの値を情報として持っておく
data Game = Continue Int | Clear

mainLoop :: Game -> IO ()
mainLoop (Clear) = putStrLn "オメデトウ!"
mainLoop (Continue answer) = do
    line <- getLine -- ゲームは入力を受け取って内部状態を更新する
    case read line of -- ここで本当はIntのパース失敗するかもしれないけどエラー処理は無視
        x | x < answer -> do putStrLn "答えはもっと大きいよ!"
                             mainLoop (Continue answer)
          | x > answer -> do putStrLn "答えはもっと小さいよ!"
                             mainLoop (Continue answer)
          | otherwise  -> do mainLoop (Clear) -- 答えが合ってたらゲームの状態をクリアにする

main = do
    randNum <- randomRIO (0,100)
    mainLoop (Continue randNum)
Only registered users are allowed to comment on the entry. Please log in to comment.