コード例 #1
0
    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));
        }
    }
コード例 #2
0
ファイル: Program.cs プロジェクト: danielsouzaaf/Labirinto
        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();
        }
コード例 #3
0
 private List <No> BAEstrela(int[] aiInteiros, bool h1)
 {
     return(AEstrela.Buscar(aiInteiros, h1));
 }