diff options
-rw-r--r-- | Game.hs | 9 |
1 files changed, 6 insertions, 3 deletions
@@ -34,6 +34,8 @@ beginTurn game@(Game plyrs pidx att dir prev stock disc) = do putStrLn $ replicate 80 '-' putStrLn $ P.name player ++ "'s turn (input 0 to skip turn and draw card)" putStrLn $ P.showCards player prev + putStrLn $ "Stock: " ++ (show $ length stock) + ++ ", Discard: " ++ (show $ length disc) putStrLn $ "Current attack: " ++ show att putStrLn $ "Prev card: " ++ C.showCard prev @@ -51,7 +53,7 @@ drawAndSkip :: Game -> IO Game drawAndSkip game@(Game plyrs pidx att dir prev stock disc) = do gen <- newStdGen let stockLongEnough = if length stock < att - then stock ++ (C.shuffle gen stock) + then stock ++ (C.shuffle gen disc) else stock let stock' = drop att stockLongEnough let disc' = if length stock < att @@ -63,7 +65,7 @@ drawAndSkip game@(Game plyrs pidx att dir prev stock disc) = do let plyrs' = P.update plyrs pidx player' let pidx' = (pidx + dir) `mod` length plyrs putStrLn $ (P.name player) ++ " draws " ++ (C.showCards cardsToDraw) - return $ Game plyrs' pidx' att dir prev stock' disc' + return $ Game plyrs' pidx' 1 dir prev stock' disc' -- | Game state after player sheds card. shedAndContinue :: Card -> Game -> IO Game @@ -83,7 +85,8 @@ shedAndContinue card game@(Game plyrs pidx att dir prev stock disc) = do let att' = case card of Card _ C.Two -> if att == 1 then 2 else att + 2 Card _ C.Three -> if att == 1 then 3 else att + 3 - _ -> 1 + Card _ C.Seven -> 1 + _ -> att putStrLn $ (P.name player) ++ " plays " ++ (C.showCard card) return $ Game plyrs' pidx' att' dir' card stock disc' |