diff options
author | Frederick Yin <fkfd@fkfd.me> | 2023-01-09 11:08:02 +0800 |
---|---|---|
committer | Frederick Yin <fkfd@fkfd.me> | 2023-01-09 11:08:02 +0800 |
commit | d034b9c9273a7f3ff91554c4b605dd488207caa1 (patch) | |
tree | 2eb992ddb5a35371ea355050f9d83e7a5eccf4ef /Player.hs | |
parent | 552b8a0a8ed89fdc85459037f19ae0a13bfe6702 (diff) |
Display player's cards in color
Diffstat (limited to 'Player.hs')
-rw-r--r-- | Player.hs | 14 |
1 files changed, 11 insertions, 3 deletions
@@ -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) |