diff options
author | Frederick Yin <fkfd@fkfd.me> | 2023-01-05 22:10:15 +0800 |
---|---|---|
committer | Frederick Yin <fkfd@fkfd.me> | 2023-01-05 22:10:15 +0800 |
commit | ba61f2b7363116f6530fc6c256b1ad97ef0e0861 (patch) | |
tree | 6c21bb93bc89f621e9a5ed25ae787d2fa0224344 | |
parent | acd9a60a2232cea6efceee64d1c442d19c52235d (diff) |
Game.dealCards
-rw-r--r-- | Game.hs | 11 | ||||
-rw-r--r-- | Main.hs | 9 |
2 files changed, 16 insertions, 4 deletions
@@ -39,3 +39,14 @@ prompt game@(Game plyrs pidx att _ _ _) = do putStrLn "This card does not exist, try again" prompt game else return $ Just (cards !! cardIdx) + +-- | Deal c cards to each player in game. +dealCards :: Int -> Game -> Game +dealCards c game@(Game plyrs _ _ _ stock disc) + | (length $ P.cards $ head plyrs) < c = + dealCards c game { players = newPlyrs, stockPile = newStock } + | otherwise = game + where newPlyrs = giveOneCardEach stock plyrs + newStock = drop c stock + giveOneCardEach = + zipWith (\card player -> player { P.cards = card:(P.cards player) }) @@ -9,6 +9,7 @@ import Game (Game(..), stockPile, discardPile, prompt, + dealCards, ) import Player (Player(..)) import qualified Player as P @@ -20,9 +21,9 @@ main = do gen <- getStdGen let stock = shuffle gen $ fullDecks 2 let discard = [] - let defaultPlayers = [ Player "Alice" 0 $ take 6 $ fullDecks 1 - , Player "Bob" 0 $ take 6 $ fullDecks 1 - , Player "Carol" 0 $ take 6 $ fullDecks 1 + let defaultPlayers = [ Player "Alice" 0 [] + , Player "Bob" 0 [] + , Player "Carol" 0 [] ] let game = Game { players = defaultPlayers , playerIdx = 0 @@ -31,5 +32,5 @@ main = do , stockPile = stock , discardPile = discard } - card <- prompt game + card <- prompt $ dealCards 6 game print card |