예제 #1
0
        private Sonda mover(Sonda sonda, Planalto planalto)
        {
            switch (sonda.direcaoAtual)
            {
            case "n":
            {
                if (sairaDoPlanaltoY(++sonda.coordenadaY, planalto))
                {
                    return(sonda);
                }
                else
                {
                    sonda.coordenadaY--;
                    return(sonda);
                }
            }

            case "s":
            {
                if (sairaDoPlanaltoY(--sonda.coordenadaY, planalto))
                {
                    return(sonda);
                }
                else
                {
                    sonda.coordenadaY++;
                    return(sonda);
                }
            }

            case "e":
            {
                if (sairaDoPlanaltoX(++sonda.coordenadaX, planalto))
                {
                    return(sonda);
                }
                else
                {
                    sonda.coordenadaX--;
                    return(sonda);
                }
            }

            case "w":
            {
                if (sairaDoPlanaltoX(--sonda.coordenadaX, planalto))
                {
                    return(sonda);
                }
                else
                {
                    sonda.coordenadaX++;
                    return(sonda);
                }
            }
            }
            return(sonda);
        }
예제 #2
0
        public Sonda explorar(Sonda sonda, Planalto planalto)
        {
            if (posicaoEhValida(sonda, planalto))
            {
                comandos = transformaInstrucoesEmComandos(sonda.instrucoes);

                foreach (var comando in comandos)
                {
                    if (comando.Equals('l') || comando.Equals('r'))
                    {
                        sonda.direcaoAtual = girar(sonda.direcaoAtual, comando);
                    }
                    else if (comando.Equals('m'))
                    {
                        sonda.mover(sonda, planalto);
                    }
                }
                return(sonda);
            }
            else
            {
                return(new Sonda());
            }
        }
예제 #3
0
 private bool posicaoEhValida(Sonda sonda, Planalto planalto)
 {
     return((sonda.coordenadaX - 1 <= planalto.tamanhoX && sonda.coordenadaY - 1 <= planalto.tamanhoY) ? true : false);
 }