summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederick Yin <fkfd@fkfd.me>2023-01-09 13:33:53 +0800
committerFrederick Yin <fkfd@fkfd.me>2023-01-09 13:33:53 +0800
commit0a14130d8da78855a8d73d6d255dee060565df55 (patch)
tree3841ab7489ebd8fbf0f71e9895899518312f1bf5
parentbdb4482b8f4556263713fabe34c8b96528c3c494 (diff)
Fix bug in restoring stock, fix attack rules
-rw-r--r--Game.hs9
1 files changed, 6 insertions, 3 deletions
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'