void (*ptr)(int) =(void (*)(int)) ((int)CycleIteration + (arg / N) * ((int)CycleEnd - (int)CycleIteration));
#include <stdio.h>
#include <stdlib.h>
void cycleFor(int from, int to, int current){
if (current > to)return;
printf("%d\n", current);
cycleFor(from, to, ++current);
}
int main(){
cycleFor(0, 100, 0);
}
let n = 1;
setInterval(function(){
let nc = n++;
console.log("start "+nc);
let t = Date.now() +5000;
while( Date.now() < t){
}
console.log("end"+nc);
},1000);
Находим квадрат где стоит наш бот это старт и где игрок, далее если нужно быстро найти делаем через A* с эвристическим алгоритмом если нужно найти именно самый кратчайший путь, то проверяем все, но искать будет долго.
Проверку на то, можно ли пройти на следующий квадрат, делаем через проверку коллизии прямоугольник\полигон, НО! Для ускорения крайне рекомендую делать проверку прямоугольник\прямоугольник, для это у каждого полигона предварительно также записать его AABB, и если происходит коллизия прямоугольник\прямоугольник, тогда уже делаем прямоугольник\полигон
Да ну и все, в итоге получаем нужный путь, если не устраивает по скорости работы думаем как оптимизировать(некоторые варианты писал ранее)