Skat Engine und AI auf Haskell Basis
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

30 lignes
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 }