module Main where import Random (randomRIO) wins :: Int-> Maybe Int wins n = let m = (n- 1) `mod` 4 in if m == 0 then Nothing else Just m getInput :: IO Int getInput = do putStr "Wieviele nehmen Sie? " n <- catch (getLine >>= readIO) (\_ -> putStrLn "Eingabefehler." >> getInput) if n<=(0::Int) || n>3 then putStrLn "Ungültige Eingabe!" >> getInput else return n play :: Int-> IO () play n = do putStrLn ("Es sind "++ show n ++" Hölzchen im Haufen.") if n== 1 then putStrLn "Ich habe gewonnen!" else do m<- getInput case wins (n-m) of Nothing -> putStrLn "Ich gebe auf." Just l -> do putStrLn ("Ich nehme " ++ show l) play (n-(m+l)) main :: IO () main = do putStrLn "\nWillkommen bei Nim!\n" n <- randomRIO(5,49) play n