19 lines
756 B
Haskell

module Cartes where
import Data.Set as Set
data Figure = Valet | Cavalier | Dame | Roi deriving (Eq, Ord, Show)
data Couleur = Pique | Coeur | Carreau | Trefle deriving (Eq, Show, Ord)
data Carte = Valeur (Int, Couleur) | Tete (Figure, Couleur) | Atout Int | Excuse deriving (Eq, Ord)
instance Show Carte where
show (Excuse) = "Excuse"
show (Atout n) = (show n) ++ " d'atout"
show (Tete (f,c)) = (show f) ++ " de " ++ (show c)
show (Valeur (n,c)) = (show n) ++ " de " ++ (show c)
allFigures = [Valet, Cavalier, Dame, Roi]
allCouleurs = [Pique, Coeur, Carreau, Trefle]
deck :: Set Carte
deck = fromList ([Valeur (n,c) | n<-[1..10], c<-allCouleurs] ++ [Tete (f,c) | f<- allFigures, c<- allCouleurs] ++ [Atout n | n<-[1..21]] ++ [Excuse])