-- | An example AI player. module AI.Lame (lame) where import System.Random import AI.Utils import Board lame :: AI lame = AI { name = "lame" , description = "Randomly selects the next valid turn." , strategy = winNext lameStrategy } -- | The lame strategy picks a valid turn at random. If a two-move turn is available, it picks one. (wow, pretty smart!) lameStrategy :: Strategy lameStrategy (BoardTree _ _ branches) g = (turns !! i, g') where allTurns = fst $ unzip branches goodTurns = [ (m1, Just m2) | (m1, Just m2) <- allTurns ] turns = if null goodTurns then allTurns else goodTurns (i, g') = randomR (0, length turns - 1) g