qiao / PathFinding.js

A comprehensive path-finding library for grid based games
http://qiao.github.io/PathFinding.js/visual/
8.35k stars 1.31k forks source link

Problem 7 #209

Open uginuss opened 1 year ago

uginuss commented 1 year ago

Uncaught TypeError: Cannot read properties of undefined (reading '7') at r.getNodeAt (pathfinding-browser.min.js:1:4349) at r.findPath (pathfinding-browser.min.js:1:7595) at js.js:37:19 have such problem How can I decide it? Leave a code: const lab = [
["1", "1", "1", "1", "1", "1", "1", "1", "1"], ["1", "1", "1", "1", "0", "1", "1", "1", "1"], ["1", "1", "0", "0", "0", "1", "1", "1", "1"], ["1", "1", "0", "1", "0", "1", "1", "1", "1"], ["1", "1", "1", "0", "0", "0", "0", "0", "1"], ["1", "1", "1", "1", "0", "1", "1", "1", "1"], ["1", "1", "1", "1", "0", "1", "1", "0", "1"], ["1", "1", "0", "0", "0", "0", "0", "0", "1"], ["1", "1", "1", "1", "1", "1", "0", "1", "1"] ];

// Определяем координаты входа и выхода из лабиринта const startx = 5; const starty = 2; const exitx = 7 const exity = 9; var width = 9; var height = 9;

var grid = new PF.Grid(width, height);

for (var i = 0; i < lab.length; i++) { for (var j = 0; j < lab[i].length; j++) { if (lab[i][j]=="1") { grid.setWalkableAt(j, i, false); } else{ grid.setWalkableAt(j, i, true); }; } } console.log(grid);

var finder = new PF.AStarFinder();

37 line) var path = finder.findPath(startx, starty, exitx, exity, grid);

document.getElementById("decider").innerHTML = path;

brean commented 1 year ago
  1. you forgot a semicolon after extix
  2. the positions are indices, so you need to subtract 1 With a small simplification of your loop it should look like this:
    const lab = [
    ["1", "1", "1", "1", "1", "1", "1", "1", "1"],
    ["1", "1", "1", "1", "0", "1", "1", "1", "1"],
    ["1", "1", "0", "0", "0", "1", "1", "1", "1"],
    ["1", "1", "0", "1", "0", "1", "1", "1", "1"],
    ["1", "1", "1", "0", "0", "0", "0", "0", "1"],
    ["1", "1", "1", "1", "0", "1", "1", "1", "1"],
    ["1", "1", "1", "1", "0", "1", "1", "0", "1"],
    ["1", "1", "0", "0", "0", "0", "0", "0", "1"],
    ["1", "1", "1", "1", "1", "1", "0", "1", "1"]
    ];
    const startx = 4;
    const starty = 1;
    const exitx = 6;
    const exity = 8;
    const width = 9;
    const height = 9;
    const grid = new PF.Grid(width, height);
    for (let i = 0; i < lab.length; i++) {
    for (let j = 0; j < lab[i].length; j++) {
        grid.setWalkableAt(j, i, lab[i][j]!=="1");
    }
    }
    console.log(grid);
    const finder = new PF.AStarFinder();
    const path = finder.findPath(startx, starty, exitx, exity, grid);