Added visibility to cards
This commit is contained in:
parent
7a4ef79bf9
commit
9ca1cdd534
1 changed files with 32 additions and 11 deletions
|
@ -1,6 +1,13 @@
|
||||||
module CardDeck (
|
module CardDeck
|
||||||
generateCards,
|
( Card
|
||||||
generateShuffledCards
|
, CardStatus(..)
|
||||||
|
, Stack
|
||||||
|
|
||||||
|
, generateDeck
|
||||||
|
, generateShuffledDeck
|
||||||
|
, showCard
|
||||||
|
, hideCard
|
||||||
|
, flipCard
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Shuffle
|
import Shuffle
|
||||||
|
@ -30,17 +37,31 @@ data CardValue = Ace
|
||||||
| NoneValue
|
| NoneValue
|
||||||
deriving (Show, Enum, Eq)
|
deriving (Show, Enum, Eq)
|
||||||
|
|
||||||
-- A card has a type and a value
|
data CardStatus = Hidden
|
||||||
type Card = (CardType, CardValue)
|
| Visible
|
||||||
|
deriving (Show)
|
||||||
|
|
||||||
-- A deck of cards
|
-- A card has a type and a value and is either shown or hidden.
|
||||||
type Deck = [Card]
|
type Card = (CardType, CardValue, CardStatus)
|
||||||
|
|
||||||
generateCards :: Deck
|
-- A stack of cards
|
||||||
generateCards = [(cType, cValue) | cType <- types, cValue <- values]
|
type Stack = [Card]
|
||||||
|
|
||||||
|
-- Generate a standard 52-card deck, given by CardValue and CardType
|
||||||
|
generateDeck :: Stack
|
||||||
|
generateDeck = [(cType, cValue, Hidden) | cType <- types, cValue <- values]
|
||||||
where types = init $ enumFrom Clubs
|
where types = init $ enumFrom Clubs
|
||||||
values = init $ enumFrom Ace
|
values = init $ enumFrom Ace
|
||||||
|
|
||||||
generateShuffledCards :: Deck
|
generateShuffledDeck :: Stack
|
||||||
generateShuffledCards = shuffle generateCards
|
generateShuffledDeck = shuffle generateDeck
|
||||||
|
|
||||||
|
showCard :: Card -> Card
|
||||||
|
showCard (t, v, _) = (t,v,Visible)
|
||||||
|
|
||||||
|
hideCard :: Card -> Card
|
||||||
|
hideCard (t, v, _) = (t,v,Hidden)
|
||||||
|
|
||||||
|
flipCard :: Card -> Card
|
||||||
|
flipCard c@(_, _, Visible) = hideCard c
|
||||||
|
flipCard c@(_, _, Hidden) = showCard c
|
||||||
|
|
Reference in a new issue