diff options
-rw-r--r-- | Game.hs | 8 | ||||
-rw-r--r-- | Main.hs | 10 |
2 files changed, 14 insertions, 4 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 @@ -10,6 +10,7 @@ import Game (Game(..), discardPile, prompt, dealCards, + advanceGame, ) import Player (Player(..)) import qualified Player as P @@ -18,8 +19,8 @@ import qualified Card as C main :: IO () main = do - gen <- getStdGen - let stock = shuffle gen $ fullDecks 2 + shuffleGen <- getStdGen + let stock = shuffle shuffleGen $ fullDecks 2 let discard = [] let defaultPlayers = [ Player "Alice" 0 [] , Player "Bob" 0 [] @@ -32,5 +33,6 @@ main = do , stockPile = stock , discardPile = discard } - card <- prompt $ dealCards 6 game - print card + + advanceGame $ dealCards 6 game + print () |