Saya memiliki papan koordinat x,y seperti ini:

enter image description here

Papan hingga 100x100.

Dengan myPosition berwarna emas, tujuan berwarna hijau dan tabrakan berwarna merah. myPosition adalah objek destinations dan collisions adalah array objek:

let myPosition={x:0,y:0};
let destinations = [{x: 0, y: 5}, {x: 2, y: 0}, {x: 2, y: 2}];
let collisions = [{x: 1, y: 0},{x: 1, y: 1},{x: 1, y: 2},{x: 1, y: 3},{x: 1, y: 4},{x: 2, y: 1},{x: 2, y: 0},{x: 2, y: 1}]

Dengan kode ini (demo langsung) Saya dapat menemukan tujuan terdekat tetapi itu tidak tahu tentang tabrakan sama sekali. Saya tidak tahu bagaimana menulis algoritma yang juga akan memeriksa tabrakan dan memberikan ouput 0,5 di scenerio di atas.

Ada juga anggapan bahwa kita tidak bisa bergerak secara diagonal.

Saya menemukan jawaban SO ini yang tampaknya memberikan jawaban atas pertanyaan saya pertanyaan tapi saya tidak bisa membuatnya bekerja dengan array input saya.

0
dopeCode 22 Maret 2019, 20:40

1 menjawab

Jawaban Terbaik

Saya menggunakan pustaka pathFinding.js dan menemukannya sangat sederhana:

currentPath = finder.findPath(heroCoords.x, 
                              heroCoords.y, 
                              monstersCoords[i].x, 
                              monstersCoords[i].y,
                              currentGrid);
0
BT101 24 Maret 2019, 13:30