예제 #1
0
    public override void executaAcao()
    {
        personagem.apagaRotas();

        if (Controle.clicouNoNada())
        {
            if (personagem.anda(Metodos.getPosicaoMouseNaGrid()))
            {
                novoEstado();
            }
            else
            {
                voltaEstado();
            }
        }
        else
        {
            personagem.mudaBox();
            if (Controle.getClicado2() != null && BuscaLargura.buscaOrientada(personagem.toPasso(), Controle.getClicado2().toPasso(), personagem.alcance))
            {
                if (Controle.getClicado2().setMensagem(personagem))
                {
                    Controle.reiniciaClicados();
                    finaliza();
                }
            }
            else
            {
                voltaEstado();
            }
            personagem.mudaBox();
        }
    }
예제 #2
0
 // Use this for initialization
 void Start()
 {
     if (Fluxo.tipoJogo == 1)
     {
         maquina = new Maquina();
     }
     if (Fluxo.tipoJogo == 2)
     {
         conexao  = new Conexao();
         cliente  = new ClienteP2P();
         servidor = new ServidorP2P();
     }
     turno = 1;
     mudaTurno(false);
     BuscaLargura.init(prefab, solido);
 }
예제 #3
0
 public override void executaAcao()
 {
     if (!Controle.clicouNoNada())
     {
         personagem.mudaBox();
         if (Controle.getClicado2() != null && BuscaLargura.buscaOrientada(personagem.toPasso(), Controle.getClicado2().toPasso(), personagem.alcance))
         {
             if (Controle.getClicado2().setMensagem(personagem))
             {
                 Controle.reiniciaClicados();
                 novoEstado();
             }
         }
         else
         {
             voltaEstado();
         }
         personagem.mudaBox();
     }
 }
예제 #4
0
        private static void AdicionarConjuntoTestes(ref StringBuilder resposta, ConjuntoTeste conjuntoTeste)
        {
            resposta.AppendLine($"Teste {conjuntoTeste.Numero}");
            List <string> autores = null;

            try
            {
                var inicial      = conjuntoTeste.IndiceAutores[NOME_ERDOS];
                var buscaLargura = new BuscaLargura(conjuntoTeste.Grafo, inicial);

                autores = conjuntoTeste.IndiceAutores.Keys.ToList();
                autores.Remove(NOME_ERDOS);

                OrdernarAutores(ref autores);

                foreach (var autor in autores)
                {
                    string numeroErdos = RetornarNumeroErdos(buscaLargura, conjuntoTeste.IndiceAutores[autor]);
                    resposta.AppendLine($"{autor}: {numeroErdos}");
                }
            }
            catch (KeyNotFoundException)
            {
                autores = conjuntoTeste.IndiceAutores.Keys.ToList();
                OrdernarAutores(ref autores);

                foreach (var autor in autores)
                {
                    resposta.AppendLine($"{autor}: {ERDOS_INFINITO}");
                }
            }
            finally
            {
                resposta.AppendLine();
            }
        }
예제 #5
0
        private static string RetornarNumeroErdos(BuscaLargura buscaLargura, int indiceAutor)
        {
            int numeroErdos = buscaLargura.DistanciaPara[indiceAutor];

            return(numeroErdos == -1 ? ERDOS_INFINITO : numeroErdos.ToString());
        }
예제 #6
0
 public void mostraRota(int mov)
 {
     BuscaLargura.busca(new Passo((int)transform.position.x, (int)transform.position.y), mov);
 }
예제 #7
0
        static void Main(string[] args)
        {
            //-----------------------------------------------------------------
            // EstadoAspiradorDePo
            //-----------------------------------------------------------------

/*
 *                      EstadoAspiradorDePo inicial = new EstadoAspiradorDePo(EstadoAspiradorDePo.SUJO, EstadoAspiradorDePo.SUJO, EstadoAspiradorDePo.DIREITA, "Inicial");
 *                      No resultado;
 *
 *                      Console.WriteLine(inicial.Descricao);
 *
 *                      Console.WriteLine();
 *                      BuscaLargura buscaLargura = new BuscaLargura();
 *                      resultado = buscaLargura.Buscar(inicial);
 *                      if (resultado == null) {
 *                              Console.WriteLine("Sem solucao para busca em largura");
 *                      } else {
 *                              Console.WriteLine("Busca em largura (" + buscaLargura.Status.NosVisitados + "): " + resultado.MontarCaminho());
 *                      }
 *
 *                      Console.WriteLine();
 *                      BuscaProfundidade buscaProfundidade = new BuscaProfundidade();
 *                      resultado = buscaProfundidade.Buscar(inicial);
 *                      if (resultado == null) {
 *                              Console.WriteLine("Sem solucao para busca em profundidade");
 *                      } else {
 *                              Console.WriteLine("Busca em profundidade (" + buscaProfundidade.Status.NosVisitados + "): " + resultado.MontarCaminho());
 *                      }
 *
 *                      Console.WriteLine();
 *                      BuscaProfundidadeRecursiva buscaProfundidadeRecursiva = new BuscaProfundidadeRecursiva();
 *                      resultado = buscaProfundidadeRecursiva.Buscar(inicial);
 *                      if (resultado == null) {
 *                              Console.WriteLine("Sem solucao para busca em profundidade recursiva");
 *                      } else {
 *                              Console.WriteLine("Busca em profundidade recursiva (" + buscaProfundidadeRecursiva.Status.NosVisitados + "): " + resultado.MontarCaminho());
 *                      }
 *
 *                      Console.WriteLine();
 *                      BuscaProfundidadeIterativa buscaProfundidadeIterativa = new BuscaProfundidadeIterativa();
 *                      resultado = buscaProfundidadeIterativa.Buscar(inicial);
 *                      if (resultado == null) {
 *                              Console.WriteLine("Sem solucao para busca em profundidade iterativa");
 *                      } else {
 *                              Console.WriteLine("Busca em profundidade iterativa (" + buscaProfundidadeIterativa.Status.NosVisitados + "): " + resultado.MontarCaminho());
 *                      }
 */
            //-----------------------------------------------------------------
            // EstadoAspiradorDePoGrande
            //-----------------------------------------------------------------

            /*
             *          int[] quartosIniciais = new int[EstadoAspiradorDePoGrande.TAMANHO];
             *          for (int i = 0; i < EstadoAspiradorDePoGrande.TAMANHO; i++) {
             *                  quartosIniciais[i] = EstadoAspiradorDePoGrande.SUJO;
             *          }
             *
             *          EstadoAspiradorDePoGrande inicial = new EstadoAspiradorDePoGrande(quartosIniciais, EstadoAspiradorDePoGrande.TAMANHO / 2, "Inicial");
             *          No resultado;
             *
             *          Console.WriteLine(inicial.Descricao);
             *
             *          Console.WriteLine();
             *          BuscaHeuristicaAEstrela buscaHeuristicaAEstrela = new BuscaHeuristicaAEstrela();
             *          resultado = buscaHeuristicaAEstrela.Buscar(inicial);
             *          if (resultado == null) {
             *                  Console.WriteLine("Sem solucao para busca heuristica A*");
             *          } else {
             *                  Console.WriteLine("Busca heuristica A* (" + buscaHeuristicaAEstrela.Status.NosVisitados + "): " + resultado.MontarCaminho());
             *          }
             *
             *          Console.WriteLine();
             *          BuscaHeuristicaSubidaDaMontanha buscaHeuristicaSubidaDaMontanha = new BuscaHeuristicaSubidaDaMontanha();
             *          resultado = buscaHeuristicaSubidaDaMontanha.Buscar(inicial);
             *          if (resultado == null) {
             *                  Console.WriteLine("Sem solucao para busca heuristica subida da montanha");
             *          } else {
             *                  Console.WriteLine("Busca heuristica subida da montanha (" + buscaHeuristicaSubidaDaMontanha.Status.NosVisitados + "): " + resultado.MontarCaminho());
             *          }
             *
             *          Console.WriteLine();
             *          BuscaLargura buscaLargura = new BuscaLargura();
             *          resultado = buscaLargura.Buscar(inicial);
             *          if (resultado == null) {
             *                  Console.WriteLine("Sem solucao para busca em largura");
             *          } else {
             *                  Console.WriteLine("Busca em largura (" + buscaLargura.Status.NosVisitados + "): " + resultado.MontarCaminho());
             *          }
             *
             *          Console.WriteLine();
             *          BuscaProfundidade buscaProfundidade = new BuscaProfundidade();
             *          resultado = buscaProfundidade.Buscar(inicial);
             *          if (resultado == null) {
             *                  Console.WriteLine("Sem solucao para busca em profundidade");
             *          } else {
             *                  Console.WriteLine("Busca em profundidade (" + buscaProfundidade.Status.NosVisitados + "): " + resultado.MontarCaminho());
             *          }
             *
             *          Console.WriteLine();
             *          BuscaProfundidadeRecursiva buscaProfundidadeRecursiva = new BuscaProfundidadeRecursiva();
             *          resultado = buscaProfundidadeRecursiva.Buscar(inicial);
             *          if (resultado == null) {
             *                  Console.WriteLine("Sem solucao para busca em profundidade recursiva");
             *          } else {
             *                  Console.WriteLine("Busca em profundidade recursiva (" + buscaProfundidadeRecursiva.Status.NosVisitados + "): " + resultado.MontarCaminho());
             *          }
             *
             *          Console.WriteLine();
             *          BuscaProfundidadeIterativa buscaProfundidadeIterativa = new BuscaProfundidadeIterativa();
             *          resultado = buscaProfundidadeIterativa.Buscar(inicial);
             *          if (resultado == null) {
             *                  Console.WriteLine("Sem solucao para busca em profundidade iterativa");
             *          } else {
             *                  Console.WriteLine("Busca em profundidade iterativa (" + buscaProfundidadeIterativa.Status.NosVisitados + "): " + resultado.MontarCaminho());
             *          } */

            //-----------------------------------------------------------------
            // EstadoHLAC
            //-----------------------------------------------------------------

            EstadoHLAC inicial = new EstadoHLAC(EstadoHLAC.MARGEM_INICIAL, EstadoHLAC.MARGEM_INICIAL, EstadoHLAC.MARGEM_INICIAL, EstadoHLAC.MARGEM_INICIAL, "Inicial");
            No         resultado;

            Console.WriteLine(inicial.Descricao);

            Console.WriteLine();
            BuscaHeuristicaAEstrela buscaHeuristicaAEstrela = new BuscaHeuristicaAEstrela();

            resultado = buscaHeuristicaAEstrela.Buscar(inicial);
            if (resultado == null)
            {
                Console.WriteLine("Sem solucao para busca heuristica A*");
            }
            else
            {
                Console.WriteLine("Busca heuristica A* (" + buscaHeuristicaAEstrela.Status.NosVisitados + "): " + resultado.MontarCaminho());
            }

            Console.WriteLine();

            /*BuscaHeuristicaSubidaDaMontanha buscaHeuristicaSubidaDaMontanha = new BuscaHeuristicaSubidaDaMontanha();
             * resultado = buscaHeuristicaSubidaDaMontanha.Buscar(inicial);
             * if (resultado == null) {
             *      Console.WriteLine("Sem solucao para busca heuristica subida da montanha");
             * } else {
             *      Console.WriteLine("Busca heuristica subida da montanha (" + buscaHeuristicaSubidaDaMontanha.Status.NosVisitados + "): " + resultado.MontarCaminho());
             * } */

            Console.WriteLine();
            BuscaLargura buscaLargura = new BuscaLargura();

            resultado = buscaLargura.Buscar(inicial);
            if (resultado == null)
            {
                Console.WriteLine("Sem solucao para busca em largura");
            }
            else
            {
                Console.WriteLine("Busca em largura (" + buscaLargura.Status.NosVisitados + "): " + resultado.MontarCaminho());
            }

            Console.WriteLine();
            BuscaProfundidade buscaProfundidade = new BuscaProfundidade();

            resultado = buscaProfundidade.Buscar(inicial);
            if (resultado == null)
            {
                Console.WriteLine("Sem solucao para busca em profundidade");
            }
            else
            {
                Console.WriteLine("Busca em profundidade (" + buscaProfundidade.Status.NosVisitados + "): " + resultado.MontarCaminho());
            }

            Console.WriteLine();
            BuscaProfundidadeRecursiva buscaProfundidadeRecursiva = new BuscaProfundidadeRecursiva();

            resultado = buscaProfundidadeRecursiva.Buscar(inicial);
            if (resultado == null)
            {
                Console.WriteLine("Sem solucao para busca em profundidade recursiva");
            }
            else
            {
                Console.WriteLine("Busca em profundidade recursiva (" + buscaProfundidadeRecursiva.Status.NosVisitados + "): " + resultado.MontarCaminho());
            }

            Console.WriteLine();
            BuscaProfundidadeIterativa buscaProfundidadeIterativa = new BuscaProfundidadeIterativa();

            resultado = buscaProfundidadeIterativa.Buscar(inicial);
            if (resultado == null)
            {
                Console.WriteLine("Sem solucao para busca em profundidade iterativa");
            }
            else
            {
                Console.WriteLine("Busca em profundidade iterativa (" + buscaProfundidadeIterativa.Status.NosVisitados + "): " + resultado.MontarCaminho());
            }

            //-----------------------------------------------------------------
            // EstadoMissionarioCanibal
            //-----------------------------------------------------------------

            /*EstadoMissionarioCanibal inicial = new EstadoMissionarioCanibal(3, 3, EstadoMissionarioCanibal.MARGEM_INICIAL, "Inicial");
             * No resultado;
             *
             * Console.WriteLine(inicial.Descricao);
             *
             * Console.WriteLine();
             * BuscaHeuristicaAEstrela buscaHeuristicaAEstrela = new BuscaHeuristicaAEstrela();
             * resultado = buscaHeuristicaAEstrela.Buscar(inicial);
             * if (resultado == null) {
             *      Console.WriteLine("Sem solucao para busca heuristica A*");
             * } else {
             *      Console.WriteLine("Busca heuristica A* (" + buscaHeuristicaAEstrela.Status.NosVisitados + "): " + resultado.MontarCaminho());
             * }
             *
             * Console.WriteLine();
             * BuscaHeuristicaSubidaDaMontanha buscaHeuristicaSubidaDaMontanha = new BuscaHeuristicaSubidaDaMontanha();
             * resultado = buscaHeuristicaSubidaDaMontanha.Buscar(inicial);
             * if (resultado == null) {
             *      Console.WriteLine("Sem solucao para busca heuristica subida da montanha");
             * } else {
             *      Console.WriteLine("Busca heuristica subida da montanha (" + buscaHeuristicaSubidaDaMontanha.Status.NosVisitados + "): " + resultado.MontarCaminho());
             * }
             *
             * Console.WriteLine();
             * BuscaLargura buscaLargura = new BuscaLargura();
             * resultado = buscaLargura.Buscar(inicial);
             * if (resultado == null) {
             *      Console.WriteLine("Sem solucao para busca em largura");
             * } else {
             *      Console.WriteLine("Busca em largura (" + buscaLargura.Status.NosVisitados + "): " + resultado.MontarCaminho());
             * }
             *
             * Console.WriteLine();
             * BuscaProfundidade buscaProfundidade = new BuscaProfundidade();
             * resultado = buscaProfundidade.Buscar(inicial);
             * if (resultado == null) {
             *      Console.WriteLine("Sem solucao para busca em profundidade");
             * } else {
             *      Console.WriteLine("Busca em profundidade (" + buscaProfundidade.Status.NosVisitados + "): " + resultado.MontarCaminho());
             * }
             *
             * Console.WriteLine();
             * BuscaProfundidadeRecursiva buscaProfundidadeRecursiva = new BuscaProfundidadeRecursiva();
             * resultado = buscaProfundidadeRecursiva.Buscar(inicial);
             * if (resultado == null) {
             *      Console.WriteLine("Sem solucao para busca em profundidade recursiva");
             * } else {
             *      Console.WriteLine("Busca em profundidade recursiva (" + buscaProfundidadeRecursiva.Status.NosVisitados + "): " + resultado.MontarCaminho());
             * }
             *
             * Console.WriteLine();
             * BuscaProfundidadeIterativa buscaProfundidadeIterativa = new BuscaProfundidadeIterativa();
             * resultado = buscaProfundidadeIterativa.Buscar(inicial);
             * if (resultado == null) {
             *      Console.WriteLine("Sem solucao para busca em profundidade iterativa");
             * } else {
             *      Console.WriteLine("Busca em profundidade iterativa (" + buscaProfundidadeIterativa.Status.NosVisitados + "): " + resultado.MontarCaminho());
             * }*/

            //-----------------------------------------------------------------
            // EstadoRainha
            //-----------------------------------------------------------------

            /*EstadoRainha inicial = new EstadoRainha("Inicial");
             * No resultado;
             *
             * Console.WriteLine(inicial.Descricao);
             *
             * Console.WriteLine();
             * BuscaHeuristicaAEstrela buscaHeuristicaAEstrela = new BuscaHeuristicaAEstrela();
             * resultado = buscaHeuristicaAEstrela.Buscar(inicial);
             * if (resultado == null) {
             *      Console.WriteLine("Sem solucao para busca heuristica A*");
             * } else {
             *      Console.WriteLine("Busca heuristica A* (" + buscaHeuristicaAEstrela.Status.NosVisitados + "): " + resultado.MontarCaminho());
             * }
             *
             * Console.WriteLine();
             * BuscaHeuristicaSubidaDaMontanha buscaHeuristicaSubidaDaMontanha = new BuscaHeuristicaSubidaDaMontanha();
             * resultado = buscaHeuristicaSubidaDaMontanha.Buscar(inicial);
             * if (resultado == null) {
             *      Console.WriteLine("Sem solucao para busca heuristica subida da montanha");
             * } else {
             *      Console.WriteLine("Busca heuristica subida da montanha (" + buscaHeuristicaSubidaDaMontanha.Status.NosVisitados + "): " + resultado.MontarCaminho());
             * }
             *
             * // TODAS AS BUSCAS SEM HEURÍSTICA OU NÃO RESOLVEM, OU DEMORAM
             * // *MUITO* PARA RESOLVER!
             *
             * //Console.WriteLine();
             * //BuscaLargura buscaLargura = new BuscaLargura();
             * //resultado = buscaLargura.Buscar(inicial);
             * //if (resultado == null) {
             * //	Console.WriteLine("Sem solucao para busca em largura");
             * //} else {
             * //	Console.WriteLine("Busca em largura (" + buscaLargura.Status.NosVisitados + "): " + resultado.MontarCaminho());
             * //}
             *
             * //Console.WriteLine();
             * //BuscaProfundidade buscaProfundidade = new BuscaProfundidade();
             * //resultado = buscaProfundidade.Buscar(inicial);
             * //if (resultado == null) {
             * //	Console.WriteLine("Sem solucao para busca em profundidade");
             * //} else {
             * //	Console.WriteLine("Busca em profundidade (" + buscaProfundidade.Status.NosVisitados + "): " + resultado.MontarCaminho());
             * //}
             *
             * //Console.WriteLine();
             * //BuscaProfundidadeRecursiva buscaProfundidadeRecursiva = new BuscaProfundidadeRecursiva();
             * //resultado = buscaProfundidadeRecursiva.Buscar(inicial);
             * //if (resultado == null) {
             * //	Console.WriteLine("Sem solucao para busca em profundidade recursiva");
             * //} else {
             * //	Console.WriteLine("Busca em profundidade recursiva (" + buscaProfundidadeRecursiva.Status.NosVisitados + "): " + resultado.MontarCaminho());
             * //}
             *
             * //Console.WriteLine();
             * //BuscaProfundidadeIterativa buscaProfundidadeIterativa = new BuscaProfundidadeIterativa();
             * //resultado = buscaProfundidadeIterativa.Buscar(inicial);
             * //if (resultado == null) {
             * //	Console.WriteLine("Sem solucao para busca em profundidade iterativa");
             * //} else {
             * //	Console.WriteLine("Busca em profundidade iterativa (" + buscaProfundidadeIterativa.Status.NosVisitados + "): " + resultado.MontarCaminho());
             * //}*/

            //-----------------------------------------------------------------
            // EstadoMapa
            //-----------------------------------------------------------------

            /*// vamos traçar uma rota da cidade 8 para a cidade 15 (se for possível)
             * EstadoMapa.CidadeFinal = EstadoMapa.Mapa.GetVertice(15);
             * EstadoMapa inicial = new EstadoMapa(EstadoMapa.Mapa.GetVertice(8), 0);
             * No resultado;
             *
             * Console.WriteLine(inicial.Descricao);
             *
             * Console.WriteLine();
             * BuscaHeuristicaAEstrela buscaHeuristicaAEstrela = new BuscaHeuristicaAEstrela();
             * resultado = buscaHeuristicaAEstrela.Buscar(inicial);
             * if (resultado == null) {
             *      Console.WriteLine("Sem solucao para busca heuristica A*");
             * } else {
             *      Console.WriteLine("Busca heuristica A* (" + buscaHeuristicaAEstrela.Status.NosVisitados + "): " + resultado.MontarCaminho());
             * }
             *
             * Console.WriteLine();
             * BuscaHeuristicaSubidaDaMontanha buscaHeuristicaSubidaDaMontanha = new BuscaHeuristicaSubidaDaMontanha();
             * resultado = buscaHeuristicaSubidaDaMontanha.Buscar(inicial);
             * if (resultado == null) {
             *      Console.WriteLine("Sem solucao para busca heuristica subida da montanha");
             * } else {
             *      Console.WriteLine("Busca heuristica subida da montanha (" + buscaHeuristicaSubidaDaMontanha.Status.NosVisitados + "): " + resultado.MontarCaminho());
             * }
             *
             * Console.WriteLine();
             * BuscaLargura buscaLargura = new BuscaLargura();
             * resultado = buscaLargura.Buscar(inicial);
             * if (resultado == null) {
             *      Console.WriteLine("Sem solucao para busca em largura");
             * } else {
             *      Console.WriteLine("Busca em largura (" + buscaLargura.Status.NosVisitados + "): " + resultado.MontarCaminho());
             * }
             *
             * Console.WriteLine();
             * BuscaProfundidade buscaProfundidade = new BuscaProfundidade();
             * resultado = buscaProfundidade.Buscar(inicial);
             * if (resultado == null) {
             *      Console.WriteLine("Sem solucao para busca em profundidade");
             * } else {
             *      Console.WriteLine("Busca em profundidade (" + buscaProfundidade.Status.NosVisitados + "): " + resultado.MontarCaminho());
             * }
             *
             * Console.WriteLine();
             * BuscaProfundidadeRecursiva buscaProfundidadeRecursiva = new BuscaProfundidadeRecursiva();
             * resultado = buscaProfundidadeRecursiva.Buscar(inicial);
             * if (resultado == null) {
             *      Console.WriteLine("Sem solucao para busca em profundidade recursiva");
             * } else {
             *      Console.WriteLine("Busca em profundidade recursiva (" + buscaProfundidadeRecursiva.Status.NosVisitados + "): " + resultado.MontarCaminho());
             * }
             *
             * Console.WriteLine();
             * BuscaProfundidadeIterativa buscaProfundidadeIterativa = new BuscaProfundidadeIterativa();
             * resultado = buscaProfundidadeIterativa.Buscar(inicial);
             * if (resultado == null) {
             *      Console.WriteLine("Sem solucao para busca em profundidade iterativa");
             * } else {
             *      Console.WriteLine("Busca em profundidade iterativa (" + buscaProfundidadeIterativa.Status.NosVisitados + "): " + resultado.MontarCaminho());
             * }*/

            Console.ReadKey();
        }