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

Safe HaskellNone

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.