LambdaHack- A game engine library for roguelike dungeon crawlers

Safe HaskellNone




Breadth first search algorithms.


Public API

data BfsDistance Source

Weighted distance between points along shortest paths.

data MoveLegal Source

State of legality of moves between adjacent points.


apartBfs :: BfsDistance Source

The distance value that denote no legal path between points.

fillBfs Source


:: (Point -> Point -> MoveLegal)

is a move from known tile legal

-> (Point -> Point -> Bool)

is a move from unknown legal

-> Point

starting position

-> Array BfsDistance

initial array, with apartBfs

-> Array BfsDistance

array with calculated distances

Fill out the given BFS array.

findPathBfs :: (Point -> Point -> MoveLegal) -> (Point -> Point -> Bool) -> Point -> Point -> Int -> Array BfsDistance -> Maybe [Point] Source

Find a path, without the source position, with the smallest length. The eps coefficient determines which direction (or the closest directions available) that path should prefer, where 0 means north-west and 1 means north.

accessBfs :: Array BfsDistance -> Point -> Maybe Int Source

Access a BFS array and interpret the looked up distance value.

minKnownBfs :: BfsDistance Source

The minimal distance value assigned to paths that don't enter any unknown tiles.