diff options
author | Frederick Yin <fkfd@fkfd.me> | 2023-01-07 20:29:57 +0800 |
---|---|---|
committer | Frederick Yin <fkfd@fkfd.me> | 2023-01-07 20:29:57 +0800 |
commit | b881871420b96553037af6790191ff91b3bcdf82 (patch) | |
tree | ef27a9f48ad43a26722db18fed1794d04b4b2df4 /Game.hs | |
parent | 81ea0f259a49d1a66374afe747334d96eee34b6a (diff) |
Rudimentary Game.advanceGame
Diffstat (limited to 'Game.hs')
-rw-r--r-- | Game.hs | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -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 |