Exemple #1
0
 public void setRobo(Robo robo)
 {
     if (robo.getX() > this.x - 1 || robo.getY() > this.y - 1 || robo.getX() < 0 || robo.getY() < 0) //
     {
         Console.WriteLine("Robo em posição invalida");
         Environment.Exit(2);
     }
     this.robo = robo;
 }
Exemple #2
0
        static void Main(string[] args)
        {
            string[] numeros;
            Console.Write("Digite respectivamente os tamanhos X e Y na mesma linha: ");//
            numeros = Regex.Split(Console.ReadLine(), @"\D+");
            int tamX = Int32.Parse(numeros[0]);
            int tamY = Int32.Parse(numeros[1]);

            // nova horta
            Horta horta = new Horta(tamX, tamY);

            Console.Write("Posicao inicial\t\t: ");  // ex de entradas: 4 4 (5,1) ( 0 , 0 )
            numeros = Regex.Split(Console.ReadLine(), @"\D+");
            int initX = Int32.Parse(numeros[0]);
            int initY = Int32.Parse(numeros[1]);

            Console.Write("Orientacao inicial\t: "); // N L S O
            char initDir = Console.ReadLine().Trim().ToCharArray()[0];

            Robo robo = new Robo(initX, initY, initDir);

            horta.setRobo(robo);

            do
            {
                Console.WriteLine("Mínimo de canteiros: 1");
                Console.Write("Canteiros a irrigar: ");// ex de entradas: 4 4 (5,1) ( 0 , 0 )
                numeros = Regex.Split(Console.ReadLine(), @"\D+");
            } while (numeros.Length < 2);

            for (int i = 0; i < numeros.Length - 1; i += 2) // somente adicionará canteiros com X e Y, caso tenha qtd impar, ignora o ultimo n°
            {
                horta.addCanteiro(Int32.Parse(numeros[i]), Int32.Parse(numeros[i + 1]));
            }

            foreach (Canteiro c in horta.getCanteiros())
            {
                robo.achaCaminho(c.getX(), c.getY());
            }

            Console.WriteLine(robo.getCaminho());
            Console.WriteLine("Orientacao final: {0}", robo.getOrientacao());
        }