From 0a14130d8da78855a8d73d6d255dee060565df55 Mon Sep 17 00:00:00 2001 From: Frederick Yin Date: Mon, 9 Jan 2023 13:33:53 +0800 Subject: Fix bug in restoring stock, fix attack rules --- Game.hs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'Game.hs') diff --git a/Game.hs b/Game.hs index f2d6fd0..275b951 100644 --- a/Game.hs +++ b/Game.hs @@ -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' -- cgit v1.2.3