LambdaHack-0.2.1: A roguelike game engine in early and very active development

Safe HaskellSafe-Infered

Game.LambdaHack.Strategy

Description

AI strategies to direct actors not controlled by the player. No operation in this module involves the State or Action type.

Synopsis

Documentation

newtype Strategy a Source

A strategy is a choice of (non-empty) frequency tables of possible actions.

Constructors

Strategy 

Fields

runStrategy :: [Frequency a]
 

Instances

Monad Strategy

Strategy is a monad. TODO: Can we write this as a monad transformer?

MonadPlus Strategy 
Show a => Show (Strategy a) 

liftFrequency :: Frequency a -> Strategy aSource

Strategy where only the actions from the given single frequency table can be picked.

(.|) :: Strategy a -> Strategy a -> Strategy aSource

Strategy with the actions from both argument strategies, with original frequencies.

reject :: Strategy aSource

Strategy with no actions at all.

(.=>) :: Bool -> Strategy a -> Strategy aSource

Conditionally accepted strategy.

only :: (a -> Bool) -> Strategy a -> Strategy aSource

Strategy with all actions not satisfying the predicate removed. The remaining action keep their original relative frequency values.