summaryrefslogtreecommitdiff
path: root/Game.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Game.hs')
-rw-r--r--Game.hs8
1 files changed, 8 insertions, 0 deletions
diff --git a/Game.hs b/Game.hs
index 6912ea4..71c6298 100644
--- a/Game.hs
+++ b/Game.hs
@@ -17,6 +17,14 @@ data Game = Game { players :: [Player]
, discardPile :: [Card]
}
+-- | Advance game state.
+advanceGame :: Game -> IO Game
+advanceGame game@(Game plyrs pidx att dir stock disc) = do
+ cardToPlay <- prompt game
+ let newPidx = (pidx + 1) `mod` (length plyrs)
+ advanceGame (Game plyrs newPidx att dir stock disc)
+
+-- | Prompt player to play a card (or draw card and skip turn).
prompt :: Game -> IO (Maybe Card)
prompt game@(Game plyrs pidx att _ _ _) = do
let player = plyrs !! pidx