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ů.

30 řádky
696B

  1. {-# LANGUAGE NamedFieldPuns #-}
  2. module Skat where
  3. import Control.Monad.State
  4. import Control.Monad.Reader
  5. import Data.List
  6. import Card
  7. import Pile
  8. import Player
  9. data SkatEnv = SkatEnv { piles :: Piles
  10. , turnColour :: Maybe Colour
  11. , trumpColour :: Colour
  12. , players :: Players }
  13. deriving Show
  14. type Skat = StateT SkatEnv IO
  15. modifyp :: (Piles -> Piles) -> Skat ()
  16. modifyp f = modify g
  17. where g env@(SkatEnv {piles}) = env { piles = f piles}
  18. getp :: (Piles -> a) -> Skat a
  19. getp f = gets piles >>= return . f
  20. setTurnColour :: Maybe Colour -> SkatEnv -> SkatEnv
  21. setTurnColour col sk = sk { turnColour = col }