Я пытаюсь построить алгоритм, который предотвращает "блокирование пути". Я рисую случайные итемы и печатаю их на карте: [...]
"X" - это игрок. Он может перемещаться по этой карте, но не может оставаться в поле "#". После рисования путь блокируется ("x" не может перемещаться, например ", (3,2):
У кого-то есть идея, концепция или материал, как написать алгоритм, который предотвращает рисование "#", когда он блокирует путь?
Вот фрагмент моего кода:
void build_dungeon(MAP_GRID& map, int chance, string object)
{
int i, j;
for (i = 0; i < g_map_size; i++){
for (j = 0; j < g_map_size; j++){
if (rand() % 100 >= (100 - chance) && map[i][j] == "[ ]" && anti_stuck(map, i, j)){
map[i][j] = object;
print_map(map);
}
}
}
}
Я пытаюсь написать функцию anti_stuck.
Вы можете выполнить заливку заливки, чтобы определить, какие квадраты достижимы из заданного начального местоположения. Смотрите эту анимацию из статьи в Википедии:
Кроме того, если вы хотите определить, можете ли вы достичь одного квадрата от другого, используйте алгоритм поиска пути, такой как A *. Опять же, анимация из Википедии: