Cześć,
Muszę napisać w jakiś sposób automatyczne chodzenie po mapie w miejsce wskazane przez kursor.
"Teoretycznie" udało mi się to zrobić, ale bez uwzględnienia kolizji. Właśnie w tym momencie mój mózg wyparował od myślenia i wyczerpałem już chyba wszystkie pomysły.
Jestem zdania, że grafiką można przekazać więcej niż 1000 słów, więc dodam dwa obrazki:
Tak to powinno wyglądać:
a obecnie wygląda to tak:
Mój początkowy pomysł wyglądał tak:
this.mouseGo = function (x, y) {
this.road = [];
var dx = this.x;
var dy = this.y;
for (;;) {
if (x > dx) {
dx = dx + 1;
} else if (x < dx) {
dx = dx - 1;
} else if (y > dy) {
dy = dy + 1;
} else if (y < dy) {
dy = dy - 1;
}
if (g.ground.getTerrainByCoords(dx, dy) == 'c' || this.checkNpcColl(dx,dy)) {
break;
}
this.road.push({x:dx,y:dy});
if (dx == x && dy == y) {
break;
}
}
g.mouse.x = 0;
g.mouse.y = 0;
}
Do funkcji mouseGo przekazuję wyczytany koordynat z myszki. Do zmiennych dx,dy przekazuję aktualne położenie gracza na mapie. W pętli nieskończonej próbuję do skutku stworzyć tablice z drogą jaką musi pokonać postać. Jak widać mam też dwie funkcje które zwracają mi możliwe kolizje. Jak na tej podstawie mógłbym to napisać, żeby działanie było zbliżone do rysunku pierwszego?