///|
/// Run with `moon run cmd/main` from the project root.
fn main {
let grid = @nav.GridMap::new(5, 5)
.set_blocked(@nav.Point::new(1, 0))
.set_blocked(@nav.Point::new(1, 1))
.set_weight(@nav.Point::new(3, 2), 5)
let result = grid.astar(
@nav.Point::new(0, 0),
@nav.Point::new(4, 4),
@nav.Heuristic::Manhattan,
)
println("MoonNavKit demo")
println("found: \{result.found}")
println("cost: \{result.cost}")
println("path length: \{result.path.length()}")
println("visited cells: \{result.visited_count}")
println("trace steps: \{result.trace.length()}")
println("json chars: \{result.to_json().length()}")
println("svg chars: \{grid.to_svg(result, 24).length()}")
println("html chars: \{grid.to_html(result, 24).length()}")
let graph = @nav.Graph::new()
let start = graph.add_node(@nav.Point::new(0, 0))
let mid = graph.add_node(@nav.Point::new(1, 0))
let goal = graph.add_node(@nav.Point::new(2, 0))
graph.add_directed_edge(start, mid, 1) |> ignore
graph.add_directed_edge(mid, goal, 1) |> ignore
graph.add_directed_edge(start, goal, 5) |> ignore
let graph_result = graph.astar(start, goal, @nav.Heuristic::Manhattan)
println("graph found: \{graph_result.found}")
println("graph cost: \{graph_result.cost}")
println("graph node count: \{graph_result.nodes.length()}")
let random_start = @nav.Point::new(0, 0)
let random_goal = @nav.Point::new(7, 7)
let config = @nav.RandomGridConfig::new(8, 8, 2026)
.with_blocked_percent(5)
.with_weighted_percent(35)
.with_max_weight(8)
let random_grid = @nav.GridMap::random_with_clear_points(
config,
[random_start, random_goal],
)
let stats = random_grid.stats()
let random_result = random_grid.astar(
random_start,
random_goal,
@nav.Heuristic::Manhattan,
)
println("random grid cells: \{stats.cells}")
println("random blocked cells: \{stats.blocked_cells}")
println("random weighted cells: \{stats.weighted_cells}")
println("random path found: \{random_result.found}")
println("random visited cells: \{random_result.visited_count}")
}