Cálculo da rota mais curta entre dois pontos
Tenho trabalhado nas últimas semanas em um jogo HTML5 multiplayer, usandonodejs
ewebsockets
.
Estou preso nesse problema há um tempo. Imagine que eu tenho esse mapa da planilha implementado com uma matriz (como mostrado abaixo)
1 outelhas marrons - existe um obstáculo no caminho e o jogador não pode passar por ele.
0 outelhas verdes - são caminhos livres onde o jogador pode se mover.
Acesse qualquer bloco no mapa ligando para:
array[x][y]
Gostaria de criar o algoritmo mais rápido possível para descobrir a rota mais curta (se houver) entre dois pontos do mapa. Como você abordaria esse problema? Eu sei que isso é problema comum.
Exemplo:
O jogador na posição (1,7) dispara uma bala com alguma IA que direciona para o jogador inimigo na posição (6,0). O Bullet tem que calcular a rota mais curta entre os 2 jogadores e, se não houver, ela simplesmente explodiria contra uma parede.
Pergunta, questão:
Como encontrar com eficiência o caminho mais curto entre dois pontos?