module GameEngine.GameActions (
GameActions(..)
) where
import GameEngine.Player
import GameEngine.Move
import GameEngine.GameState
data GameActions a b = GameActions {
getPlayer :: GameState a -> Player,
-- ^ Specifies which player has the move in the state
getMove :: GameState a -> Move b,
-- ^ Returns a legal move in the state
getResult :: GameState a -> Move b -> GameState a,
-- ^ The transition model, which determines the result of a move
isTerminal :: GameState a -> Bool,
-- ^ True if game is over, False otherwise
getScore :: GameState a -> Player -> Int
-- ^ A utility function to determine the numeric value for a game that ends in a terminal state
}
-- ^ Set of actions that defines how the game will be played