2011-10-14 04:35:15 +00:00
|
|
|
module Magic where
|
|
|
|
|
2012-01-04 05:14:44 +00:00
|
|
|
import Mana
|
2011-10-14 04:35:15 +00:00
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
-- Cards
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
data Rarity = Land
|
|
|
|
| Common
|
|
|
|
| Uncommon
|
|
|
|
| Rare
|
|
|
|
| Mythic
|
|
|
|
| Special
|
|
|
|
deriving (Show, Eq)
|
|
|
|
|
|
|
|
data Card = Card Rarity String Cost
|
|
|
|
deriving (Show, Eq)
|
|
|
|
|
2012-01-04 06:04:54 +00:00
|
|
|
instance Mana Card where
|
|
|
|
colors (Card _ _ cost) = colors cost
|
2011-10-14 04:51:34 +00:00
|
|
|
converted (Card _ _ cost) = converted cost
|
|
|
|
|
2011-10-14 05:31:33 +00:00
|
|
|
data Deck = Deck [Card]
|
|
|
|
|
|
|
|
curve :: Deck -> [(Int, Int)]
|
|
|
|
curve (Deck cards) = do
|
|
|
|
let largest = maximum (map converted cards)
|
|
|
|
map (\x -> (x, length (filter (\(Card rarity _ cost) -> rarity /= Land && converted cost == x) cards))) [0..largest]
|
|
|
|
|
2012-01-04 06:04:54 +00:00
|
|
|
cards = concat $ [ replicate 13 (Card Land "Swamp" (Cost [] [] []))
|
|
|
|
, replicate 13 (Card Land "Plains" (Cost [] [] []))
|
|
|
|
, replicate 4 (Card Mythic "Jace Beleren" (Cost [Standard 1 Colorless, Standard 2 Blue] [] []))
|
|
|
|
]
|
|
|
|
deck = Deck cards
|