LambdaHack-0.2.14: A roguelike game engine in early development

Safe HaskellNone
LanguageHaskell2010

Game.LambdaHack.Client.Bfs

Contents

Description

Breadth first search algorithms.

Synopsis

Public API

data BfsDistance Source

Weighted distance between points along shortest paths.

data MoveLegal Source

State of legality of moves between adjacent points.

Instances

apartBfs :: BfsDistance Source

The distance value that denote no legal path between points.

fillBfs Source

Arguments

:: (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.

Internal functions

minKnownBfs :: BfsDistance Source

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