magic/Magic.hs

36 lines
1 KiB
Haskell
Raw Normal View History

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)
2012-03-03 02:15:06 +00:00
data Card = Card Rarity String Cost [String]
2011-10-14 04:35:15 +00:00
deriving (Show, Eq)
instance Mana Card where
2012-03-03 02:15:06 +00:00
colors (Card _ _ cost _) = colors cost
converted (Card _ _ cost _) = converted cost
2011-10-14 04:51:34 +00:00
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)
2012-03-03 02:15:06 +00:00
map (\x -> (x, length (filter (\(Card rarity _ cost _) -> rarity /= Land && converted cost == x) cards))) [0..largest]
2011-10-14 05:31:33 +00:00
2012-03-03 02:15:06 +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