|
- {-# LANGUAGE NamedFieldPuns #-}
-
- module Skat where
-
- import Control.Monad.State
- import Control.Monad.Reader
- import Data.List
-
- import Card
- import Pile
- import Player
-
- data SkatEnv = SkatEnv { piles :: Piles
- , turnColour :: Maybe Colour
- , trumpColour :: Colour
- , players :: Players }
- deriving Show
-
- type Skat = StateT SkatEnv IO
-
- modifyp :: (Piles -> Piles) -> Skat ()
- modifyp f = modify g
- where g env@(SkatEnv {piles}) = env { piles = f piles}
-
- getp :: (Piles -> a) -> Skat a
- getp f = gets piles >>= return . f
-
- setTurnColour :: Maybe Colour -> SkatEnv -> SkatEnv
- setTurnColour col sk = sk { turnColour = col }
|