Ich mache eine Nummer Ratespiel in Haskell und ich habe 3 Schwierigkeiten.
Ich machte ein Menü, wo der Benutzer wählt, welche Schwierigkeiten, aber sobald ich es implementiert habe, fing es an, mir einen Fehler zu geben, und ich kann nicht herausfinden, was es ist.
Der Fehler:Nummer Erraten Spiel Fehler und halten die Zählung der Vermutungen
finalename.hs:5:10:
Parse error in pattern: putStrLn
Possibly caused by a missing 'do'?
Auch, wie würde ich eine Zählung der Umsetzung gehen über, wo es zählt, wie oft es dauert, bis der Benutzer zu erraten?
import System.Random (randomRIO)
main :: IO()
main = do
putStrLn "Do you want to play 1) Easy, 2) Medium or 3) Hard"
putStrLn "Select your difficulty by entering a number 1, 2 or 3"
choice <- readLn
| choice == 1 = "You selected easy" >> easy
| choice == 2 = "You selected medium" >> medium
| choice == 3 = "You selected hard" >> hard
| otherwiose = "You did not selected a valid choice" >> main
easy :: IO()
easy = do
putStrLn "Guess a number between 1 and 13: "
rNumber <- randomRIO (1, 10) :: IO Int
loop rNumber
medium :: IO()
medium = do
putStrLn "Guess a number between 1 and 25: "
rNumber <- randomRIO (1, 25) :: IO Int
loop rNumber
hard :: IO()
hard = do
putStrLn "Guess a number between 1 and 50: "
rNumber <- randomRIO (1, 50) :: IO Int
loop rNumber
loop :: Int -> IO()
loop rNumber = do
userInput <- readLn
case compare rNumber userInput of
EQ -> putStrLn "Correct!" >> main
LT -> putStrLn "Guess is too low, try again please" >> loop rNumber
GT -> putStrLn "Guess is too high, try again please" >> loop rNumber
Verwendung von 'wenn-dann-sonst' wird von einigen als eher * un * haskell angesehen. Bitte benutzen Sie * Wächter *. –
Nein, bitte verwenden Sie _ 'case'_, um eine Variable mit einer Reihe von Werten zu vergleichen! - Bitte klappen Sie das Problem auf [mcve] und geben Sie die _full_ Fehlermeldung. – leftaroundabout
@leftaroundabout: in der Tat Fall ist auch ziemlich hakelisch;) –