module Game.Poker.Cards ( Suit(..) , Card , allCards , cardSuit , cardNumber , cardStrength ---- , h2 , h3 , h4 , h5 , h6 , h7 , h8 , h9 , h10 , hJ , hQ , hK , hA , d2 , d3 , d4 , d5 , d6 , d7 , d8 , d9 , d10 , dJ , dQ , dK , dA , c2 , c3 , c4 , c5 , c6 , c7 , c8 , c9 , c10 , cJ , cQ , cK , cA , s2 , s3 , s4 , s5 , s6 , s7 , s8 , s9 , s10 , sJ , sQ , sK , sA ) where --import Control.DeepSeq data Suit = Hearts | Diamonds | Clubs | Spades deriving (Show, Read, Eq, Ord, Enum) data Card = Card Int Suit deriving (Eq, Ord) instance Show Card where show (Card i Hearts) = "H" ++ showCardNumber i show (Card i Diamonds) = "D" ++ showCardNumber i show (Card i Clubs) = "C" ++ showCardNumber i show (Card i Spades) = "S" ++ showCardNumber i showCardNumber :: Int -> String showCardNumber 14 = "A_" showCardNumber 13 = "K_" showCardNumber 12 = "Q_" showCardNumber 11 = "J_" showCardNumber 10 = "10" showCardNumber x = (show $ x) ++ "_" allCards :: [Card] allCards = [ Card num suit | suit <- [Hearts ..], num <- [2..14] ] cardSuit :: Card -> Suit cardSuit (Card _ s) = s cardNumber :: Card -> Int cardNumber (Card 14 _) = 1 -- Aは14なので cardNumber (Card n _) = n cardStrength :: Card -> Int cardStrength (Card n _) = n -------- h2 = Card 2 Hearts h3 = Card 3 Hearts h4 = Card 4 Hearts h5 = Card 5 Hearts h6 = Card 6 Hearts h7 = Card 7 Hearts h8 = Card 8 Hearts h9 = Card 9 Hearts h10 = Card 10 Hearts hJ = Card 11 Hearts hQ = Card 12 Hearts hK = Card 13 Hearts hA = Card 14 Hearts d2 = Card 2 Diamonds d3 = Card 3 Diamonds d4 = Card 4 Diamonds d5 = Card 5 Diamonds d6 = Card 6 Diamonds d7 = Card 7 Diamonds d8 = Card 8 Diamonds d9 = Card 9 Diamonds d10 = Card 10 Diamonds dJ = Card 11 Diamonds dQ = Card 12 Diamonds dK = Card 13 Diamonds dA = Card 14 Diamonds c2 = Card 2 Clubs c3 = Card 3 Clubs c4 = Card 4 Clubs c5 = Card 5 Clubs c6 = Card 6 Clubs c7 = Card 7 Clubs c8 = Card 8 Clubs c9 = Card 9 Clubs c10 = Card 10 Clubs cJ = Card 11 Clubs cQ = Card 12 Clubs cK = Card 13 Clubs cA = Card 14 Clubs s2 = Card 2 Spades s3 = Card 3 Spades s4 = Card 4 Spades s5 = Card 5 Spades s6 = Card 6 Spades s7 = Card 7 Spades s8 = Card 8 Spades s9 = Card 9 Spades s10 = Card 10 Spades sJ = Card 11 Spades sQ = Card 12 Spades sK = Card 13 Spades sA = Card 14 Spades