blob: 27d7804ca94d2382992a663e51949f6deefb900f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
module Game where
import Data.Char (isDigit)
import Control.Monad (when)
import System.Random (RandomGen)
import Player (Player, shed, draw)
import qualified Player as P
import Card (Card)
import qualified Card as C
data Direction = CCW | CW
data Game = Game { players :: [Player]
, playerIdx :: Int
, attack :: Integer
, direction :: Direction
, stockPile :: [Card]
, discardPile :: [Card]
}
prompt :: Game -> IO Card
prompt game@(Game plyrs pidx att _ _ _) = do
let player = plyrs !! pidx
let cards = P.cards player
putStrLn $ P.name player ++ "'s turn"
putStrLn $ P.showCards player
cardIdxStr <- getLine
if any (== False) $ map isDigit cardIdxStr
then do
putStrLn "Please input card #"
prompt game
else do
let cardIdx = read cardIdxStr - 1
if cardIdx < 0 || cardIdx >= length cards
then do
putStrLn "This card does not exist, try again"
prompt game
else return $ cards !! cardIdx
|