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; } }
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}"; }
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)); } }
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); }
public void Iniciar() { var coordenada = new Coordenada(5, 5); planalto = new Planalto(); planalto.Criar(coordenada); movimentoSempreParaFrente = new MovimentoParaFrente(); conexaoComOBanco = new ConexaoComOBanco(); }
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; }
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); }
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); }
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; }
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); }
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; } }
public void SetArea(Planalto area) { Area = area; }
public Sonda(Planalto planalto) { Planalto = planalto; }