Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Game.Deterministic.GameEngine
Description
Library for creating simple deterministic games, such as tic-tac-toe. The engine requires a minimal set of actions related to the game, and then will run the game until a terminal state is reached.
Simple generic example below. See the specs for a more detailed example.
import Game.Deterministic.GameEngine game :: Monad m => GameEngine m [Char] [(Int, Char)] game = GameEngine gameActions initialState gameActions :: Monad m => GameActions m [Char] [(Int, Char)] gameActions = GameActions { getPlayer = -- find the next player from a game state, getMove = -- find a move from the game state, getResult = -- transitions from a state to another state, isTerminal = -- determines if the game is terminal, getScore = -- get score from a terminal state } initialState :: GameState [Char] initialState = GameState ['x', 'x', 'x'] -- run the game engine until a terminal state is reached playSimple game
- data GameActions m a b = GameActions {}
- data GameState a = GameState a
- data Move a = Move a
- data Player = Player String
- data GameEngine m a b = GameEngine {
- gameEngineActions :: GameActions m a b
- gameEngineState :: GameState a
- play :: Monad m => GameEngine m a b -> m Int
- playSimple :: GameEngine Identity a b -> Int
- playIO :: GameEngine IO a b -> IO Int
Documentation
data GameActions m a b Source
Set of actions that defines how the game will be played
Constructors
GameActions | |
Fields
|
Constructors
GameState a |
data GameEngine m a b Source
Holds information about how the game is played, and the current state of the game.
Constructors
GameEngine | |
Fields
|
play :: Monad m => GameEngine m a b -> m Int Source
Run the provided game engine under a monadic context until a terminal state is reached.
playSimple :: GameEngine Identity a b -> Int Source
Run the provided game engine without a context until a terminal state is reached.