Exemple #1
0
        public void Mover()
        {
            try
            {
                switch (DirecaoAtual)
                {
                case eDirecao.Norte:
                    PosicaoAtual = new PosicaoXY(PosicaoAtual.X, PosicaoAtual.Y + 1);
                    break;

                case eDirecao.Leste:
                    PosicaoAtual = new PosicaoXY(PosicaoAtual.X + 1, PosicaoAtual.Y);
                    break;

                case eDirecao.Sul:
                    PosicaoAtual = new PosicaoXY(PosicaoAtual.X, PosicaoAtual.Y - 1);
                    break;

                case eDirecao.Oeste:
                    PosicaoAtual = new PosicaoXY(PosicaoAtual.X - 1, PosicaoAtual.Y);
                    break;
                }

                if (PosicaoAtual.X > Planalto.PosicaoX() || PosicaoAtual.Y > Planalto.PosicaoY())
                {
                    throw new Exception("Posição fora do planalto");
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
Exemple #2
0
        private void ExecutarExploracao(int sondaNumero)
        {
            Sondas sondas = new Sondas(bancoDeDados);

            Planalto planalto = new Planalto();

            planalto.Criar(coordenada);

            movimentoSempreParaFrente = new MovimentoParaFrente();

            var nomeDaSonda = $"Mark {sondaNumero}";

            Sonda sonda = ObterSonda(sondas, nomeDaSonda);

            sonda.Explorar(planalto);

            sonda.IniciarEm(posicaoInicioalDaSonda, direcaoCardinalInicioalDaSonda);

            ExecutarInstrucaoDeMovimentoNaSonda(sonda, movimentoSempreParaFrente);

            sondas.Gravar(sonda);

            sondas = null;

            var direcao = sonda.DirecaoCardinalAtual.ToString().ToUpper().Substring(0, 1).Replace("O", "W").Replace("L", "E");

            if (sondaNumero > 1)
            {
                resultado += "-";
            }

            resultado += $"{sonda.PosicaoAtual.X} {sonda.PosicaoAtual.Y} {direcao}";
        }
Exemple #3
0
        public ActionResult <List <Sonda> > Post([FromBody] Planalto planalto)
        {
            List <Sonda> resultadoExploracao = new List <Sonda>();

            if (ModelState.IsValid)
            {
                if (planalto.ehRetangular(planalto))
                {
                    foreach (var sonda in planalto.sondas)
                    {
                        resultadoExploracao.Add(sonda.explorar(sonda, planalto));
                    }

                    return(resultadoExploracao);
                }
                else
                {
                    return(BadRequest(planaltoRetanguarMsg));
                }
            }
            else
            {
                return(BadRequest(ModelState));
            }
        }
Exemple #4
0
        public void Explorar(Planalto planalto)
        {
            if (planalto == null)
            {
                EspecificacaoDeNegocio.Adicionar(new RegraDeNegocio("O planalto a ser explorado não foi informado."));
            }

            Planalto = planalto;
        }
        private Sonda IniciarSonda()
        {
            var posicaoXY = new PosicaoXY(5, 5);

            planalto = new Planalto(posicaoXY);
            Sonda sonda = new Sonda(planalto);

            return(sonda);
        }
Exemple #6
0
        public void Iniciar()
        {
            var coordenada = new Coordenada(5, 5);

            planalto = new Planalto();
            planalto.Criar(coordenada);

            movimentoSempreParaFrente = new MovimentoParaFrente();

            conexaoComOBanco = new ConexaoComOBanco();
        }
Exemple #7
0
        public void Explorar(Planalto planalto)
        {
            if (planalto == null)
            {
                var violacaoDeRegra = new RegraDeNegocio("O planalto a ser explorado não foi informado.");
                QuebraDeEspeficacao.Adicionar(violacaoDeRegra);
                return;
            }

            Planalto = planalto;
        }
Exemple #8
0
        public void Iniciar()
        {
            especificacaoDeNegocio = new EspecificacaoDeNegocio();
            corretorDaProximaPosicaoDoMovimento = new CorretorDaProximaPosicaoDoMovimento();
            movimentoSempreParaFrente           = new MovimentoParaFrente(corretorDaProximaPosicaoDoMovimento);

            var coordenada = new Coordenada(5, 5);
            var planalto   = new Planalto();

            planalto.Criar(coordenada);
            sonda = new Sonda(especificacaoDeNegocio, "Mark I");
            sonda.Explorar(planalto);
        }
Exemple #9
0
        public void Iniciar()
        {
            var coordenada = new Coordenada(5, 5);

            planalto = new Planalto();
            planalto.Criar(coordenada);

            movimentoSempreParaFrente = new MovimentoParaFrente();

            sonda = new Sonda("Mark I");

            sonda.Explorar(planalto);
        }
        public void Iniciar()
        {
            especificacaoDeNegocio = new EspecificacaoDeNegocio();
            corretorDaProximaPosicaoDoMovimento = new CorretorDaProximaPosicaoDoMovimento();

            var coordenada = new Coordenada(5, 5);

            planalto = new Planalto();
            planalto.Criar(coordenada);

            movimentoSempreParaFrente = new MovimentoParaFrente(corretorDaProximaPosicaoDoMovimento);

            conexaoComOBanco = new ConexaoComOBanco();
            db = new ProvedorDeAcesso().Criar(conexaoComOBanco);
        }
Exemple #11
0
        public void IniciarEm(Posicao posicaoDesejada, DirecaoCardinal direcaoCardinalAtual)
        {
            if (posicaoDesejada == null)
            {
                EspecificacaoDeNegocio.Adicionar(new RegraDeNegocio("A posição inicial da sonda não foi informada."));
                return;
            }
            else
            {
                if (posicaoDesejada.X > Planalto.EixoX() | posicaoDesejada.Y > Planalto.EixoY())
                {
                    EspecificacaoDeNegocio.Adicionar(new RegraDeNegocio("Posição fora da faixa (Malha do Planalto) para exploração."));
                    return;
                }
            }

            PosicaoAtual         = posicaoDesejada;
            DirecaoCardinalAtual = direcaoCardinalAtual;
        }
Exemple #12
0
        public Sonda ObterPorId(Guid id)
        {
            var coordenada = new Coordenada(5, 5);
            var planalto   = new Planalto();

            planalto.Criar(coordenada);

            var movimentoSempreParaFrente = new MovimentoParaFrente();
            var sonda = new Sonda("Mark I");

            sonda.Explorar(planalto);

            var posicaoDesejada = new Posicao(1, 2);

            sonda.IniciarEm(posicaoDesejada, DirecaoCardinal.Norte);

            sonda.Vire(Direcao.Esqueda);
            sonda.Move(movimentoSempreParaFrente);


            return(sonda);
        }
Exemple #13
0
        public void IniciarPercurso(PosicaoXY posicaoInicial, eDirecao direcaoAtual)
        {
            try
            {
                if (posicaoInicial == null)
                {
                    throw new Exception("É necessário informar a posição inicial da sonda.");
                }


                if (posicaoInicial.X > Planalto.PosicaoX() || posicaoInicial.Y > Planalto.PosicaoY())
                {
                    throw new Exception("Posição fora do planalto");
                }


                PosicaoAtual = posicaoInicial;
                DirecaoAtual = direcaoAtual;
            }
            catch (Exception ex)
            {
                throw;
            }
        }
Exemple #14
0
 public void SetArea(Planalto area)
 {
     Area = area;
 }
Exemple #15
0
 public Sonda(Planalto planalto)
 {
     Planalto = planalto;
 }