Skat Engine und AI auf Haskell Basis
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

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