Skat Engine und AI auf Haskell Basis
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

37 řádky
977B

  1. module Skat where
  2. import Card
  3. import Control.Monad.State
  4. import Control.Monad.Reader
  5. import Data.List
  6. data SkatEnv = SkatEnv { cards :: [CardS]
  7. , turnColour :: Maybe Colour
  8. , trumpColour :: Colour
  9. , players :: Players }
  10. deriving Show
  11. type Skat = StateT SkatEnv IO
  12. table :: Skat [Card]
  13. table = gets cards >>= return . foldr f []
  14. where f (CardS c Table _) cs = c : cs
  15. f _ cs = cs
  16. tableS :: Skat [CardS]
  17. tableS = gets cards >>= return . foldr f []
  18. where f c@(CardS _ Table _) cs = c : cs
  19. f _ cs = cs
  20. move :: Card -> Space -> Skat ()
  21. move card sp = do
  22. cs <- gets cards
  23. let cs' = moveCard card sp cs
  24. modify (\env -> env { cards = cs' })
  25. cardsAt :: Space -> Skat [Card]
  26. cardsAt sp = gets cards >>= return . findCards sp
  27. setTurnColour :: Maybe Colour -> SkatEnv -> SkatEnv
  28. setTurnColour col sk = sk { turnColour = col }