summaryrefslogtreecommitdiff
path: root/Player.hs
diff options
context:
space:
mode:
authorFrederick Yin <fkfd@fkfd.me>2023-01-09 11:08:02 +0800
committerFrederick Yin <fkfd@fkfd.me>2023-01-09 11:08:02 +0800
commitd034b9c9273a7f3ff91554c4b605dd488207caa1 (patch)
tree2eb992ddb5a35371ea355050f9d83e7a5eccf4ef /Player.hs
parent552b8a0a8ed89fdc85459037f19ae0a13bfe6702 (diff)
Display player's cards in color
Diffstat (limited to 'Player.hs')
-rw-r--r--Player.hs14
1 files changed, 11 insertions, 3 deletions
diff --git a/Player.hs b/Player.hs
index 6dab74c..6f2804d 100644
--- a/Player.hs
+++ b/Player.hs
@@ -3,6 +3,7 @@ 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 :: Integer
@@ -24,6 +25,13 @@ 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 -> String
-showCards (Player _ _ cs) =
- unlines $ zipWith (\i c -> (show i) ++ ". " ++ C.showCard c) [1..] cs
+showCards :: Player -> Card -> String
+showCards (Player _ _ cs) prev =
+ unlines $ zipWith joinAndColorize [1..] cs
+ where joinAndColorize n c =
+ if C.isValid prev 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)