Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- data Suit = Club | Diamond | Heart | Spade
- deriving (Eq, Ord, Bounded, Enum)
- suitchars = "CDHS"
- data Rank =
- R2 | R3 | R4 | R5 | R6 | R7 | R8 | R9 | R10 |
- Jack | Queen | King | Ace
- deriving (Eq, Ord, Bounded, Enum)
- rankchars = "23456789TJQKA"
- data Card = Card {suit::Suit, rank::Rank}
- deriving (Eq, Bounded)
- instance Ord Card where
- compare (Card s1 r1) (Card s2 r2) =
- let suitorder = compare s1 s2
- in if suitorder == EQ then compare r1 r2 else suitorder
- instance Enum Card where
- fromEnum (Card s r) = (fromEnum s)*13 + (fromEnum r)
- toEnum n = (Card s r)
- where s = toEnum (n `div` 13)
- r = toEnum (n `mod` 13)
- initialGuess :: Int -> ([Card], GameState)
- initialGuess card_number
- | card_number == 2 = ((Card Club R5):(Card Heart J),cardDeck)
- nextGuess :: ([Card],GameState) -> (Int,Int,Int,Int,Int) ->([Card],GameState)
- initialGuess card_number
- | card_number == 2 = ((Card Club R5):(Card Heart J),cardDeck)
- initialGuess card_number
- | card_number == 2 = (Card Club R5 : Card Heart J : [], cardDeck)
- initialGuess card_number
- | card_number == 2 = ([Card Club R5, Card Heart J], cardDeck)
- instance Ord Card where
- compare (Card s1 r1) (Card s2 r2) =
- let suitorder = compare s1 s2
- in if suitorder == EQ then compare r1 r2 else suitorder
- instance Ord Card where
- compare (Card s1 r1) (Card s2 r2) = compare s1 s2 `mappend` compare r1 r2
- data Card = Card {suit::Suit, rank::Rank}
- deriving (Eq, Ord, Bounded)
- startGuessing guesses state = do
- feedBack <- readFeedback
- let (newGuess, newState) = nextGuess (guesses, state) feedback
- startGuessing (guesses ++ newGuess) newState
- main = do
- let (guesses, state) = initialGuess 2
- startGuessing guesses state
Add Comment
Please, Sign In to add comment