summaryrefslogtreecommitdiff
path: root/Player.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Player.hs')
-rw-r--r--Player.hs52
1 files changed, 0 insertions, 52 deletions
diff --git a/Player.hs b/Player.hs
deleted file mode 100644
index 3bec60c..0000000
--- a/Player.hs
+++ /dev/null
@@ -1,52 +0,0 @@
-module Player where
-
-import qualified Data.List as L
-import Card (Card)
-import qualified Card as C
-import qualified Color
-
-data Player = Player { name :: String
- , penalty :: Int
- , cards :: [Card]
- }
-
--- | Update `i`-th player in `ps` to `p`.
-update :: [Player] -> Int -> Player -> [Player]
-update ps i p =
- let (left, right) = splitAt i ps
- in left ++ [p] ++ (tail right)
-
--- | Same player after shedding card specified.
-shed :: Player -> Card -> Player
-shed (Player n p cs) c = Player n p $ L.delete c cs
-
--- | Same player after drawing cards specified.
-draw :: Player -> [Card] -> Player
-draw (Player n p cs) cs' = Player n p $ L.sort (cs' ++ cs)
-
--- | Show player's cards, e.g. "1. Spade 2"
-showCards :: Player -> Card -> Int -> String
-showCards (Player _ _ cs) prev att =
- unlines $ zipWith joinAndColorize [1..] cs
- where joinAndColorize n c =
- if C.isValid prev att c
- then if C.isSpecial c
- then Color.green $ join n c
- else join n c
- else Color.red $ join n c
- join n c = (show n) ++ ". " ++ (C.showCard c)
-
--- | Empty all players' cards.
-clearCards :: [Player] -> [Player]
-clearCards plyrs = map clear plyrs
- where clear (Player n p _) = Player n p []
-
--- | Update penalty for each player after a round.
-calcPenalties :: [Player] -> [Player]
-calcPenalties plyrs = map penalize plyrs
- where penalize (Player n p c) = Player n (p + length c) c
-
--- | Pretty print penalties.
-showPenalties :: [Player] -> String
-showPenalties = unlines . map showPenalty
- where showPenalty (Player n p _) = n ++ ":\t" ++ show p