示例#1
0
        public void MoveSonda(Sonda sonda)
        {
            if (SondaEstaDentroDaMalha(sonda))
            {
                switch (sonda.FrenteDaSonda)
                {
                case EstrelaVentos.North:
                    if (sonda.PosicaoY < malha.CoordenadaMaxY)
                    {
                        sonda.PosicaoY++;
                    }
                    else
                    {
                        MostrarMensagemFimMalha();
                    }
                    break;

                case EstrelaVentos.East:
                    if (sonda.PosicaoX < malha.CoordenadaMaxX)
                    {
                        sonda.PosicaoX++;
                    }
                    else
                    {
                        MostrarMensagemFimMalha();
                    }
                    break;

                case EstrelaVentos.South:
                    if (sonda.PosicaoY >= 0)
                    {
                        sonda.PosicaoY--;
                    }
                    else
                    {
                        MostrarMensagemFimMalha();
                    }
                    break;

                case EstrelaVentos.West:
                    if (sonda.PosicaoX >= 0)
                    {
                        sonda.PosicaoX--;
                    }
                    else
                    {
                        MostrarMensagemFimMalha();
                    }
                    break;
                }
            }
            else
            {
                throw new ArgumentException("Sonda fora da malha");
            }
        }
示例#2
0
        static void Main(string[] args)
        {
            var random   = new Random();
            var malha    = new Malha(10, 10);
            var sonda1   = new Sonda(1, 1, 2);
            var sonda2   = new Sonda(2, 3, 3);
            var controle = new Controle(malha);

            Console.ReadKey();
        }
示例#3
0
 public void ViraSonda(Sonda sonda, char lado)
 {
     if (SondaEstaDentroDaMalha(sonda))
     {
         if (lado == 'R')
         {
             if (sonda.FrenteDaSonda == EstrelaVentos.West)
             {
                 sonda.FrenteDaSonda = EstrelaVentos.North;
             }
             else
             {
                 sonda.FrenteDaSonda++;
             }
         }
         else if (lado == 'L')
         {
             if (sonda.FrenteDaSonda == EstrelaVentos.North)
             {
                 sonda.FrenteDaSonda = EstrelaVentos.West;
             }
             else
             {
                 sonda.FrenteDaSonda--;
             }
         }
         else
         {
             throw new ArgumentException("Comando inválido");
         }
     }
     else
     {
         throw new ArgumentException("Sonda fora da malha");
     }
 }
示例#4
0
 private bool SondaEstaDentroDaMalha(Sonda sonda)
 {
     return(SondaEstaNaCoordenadaCorreta(sonda.PosicaoX, malha.CoordenadaMaxX) &&
            SondaEstaNaCoordenadaCorreta(sonda.PosicaoY, malha.CoordenadaMaxY));
 }