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"); } }
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(); }
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"); } }
private bool SondaEstaDentroDaMalha(Sonda sonda) { return(SondaEstaNaCoordenadaCorreta(sonda.PosicaoX, malha.CoordenadaMaxX) && SondaEstaNaCoordenadaCorreta(sonda.PosicaoY, malha.CoordenadaMaxY)); }