public IEnumerator Mover(int maxMov, Vector2 posicao) { AEstrela buscaCaminho = new AEstrela(new Vector2(transform.position.x, transform.position.y), posicao, maxMov, Controle.getMapa()); buscaCaminho.solido = solido; Stack <Passo> pilha = buscaCaminho.getCaminho(); Passo atual; while (pilha.Count != 0) { atual = pilha.Pop(); Vector3 novaPos = new Vector2(atual.x, atual.y); transform.position = novaPos; atual = atual.anterior; yield return(new WaitForSeconds(0.08f)); } }
static void Main(string[] args) { int[,] labirinto = { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; (int, int)inicio = (0, 0); (int, int)fim = (6, 9); List <(int, int)> caminho = AEstrela.Resolver(labirinto, inicio, fim); foreach (var tuple in caminho) { Console.Write(tuple); if (!tuple.Equals(fim)) { Console.Write("->"); } } if (caminho.Count < 1) { Console.WriteLine("Não existe um caminho para chegar no ponto desejado."); } Console.ReadKey(); }
private List <No> BAEstrela(int[] aiInteiros, bool h1) { return(AEstrela.Buscar(aiInteiros, h1)); }