From b881871420b96553037af6790191ff91b3bcdf82 Mon Sep 17 00:00:00 2001 From: Frederick Yin Date: Sat, 7 Jan 2023 20:29:57 +0800 Subject: Rudimentary Game.advanceGame --- Game.hs | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'Game.hs') 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 -- cgit v1.2.3