Example #1
0
        public async void CultivateUpwardsAsync(Garden garden, int[,] gardenCellCoordinates)
        {
            Console.WriteLine($"{this.Id} gardener started working");
            await Task.Run(() => CultivateUpwards(garden, gardenCellCoordinates));

            Console.WriteLine($"{this.Id} gardener completed the work");
        }
Example #2
0
        public async void CultivateFromLeftToRightAsync(Garden garden)
        {
            Console.WriteLine($"{this.Id} gardener started working");
            await Task.Run(() => CultivateFromLeftToRight(garden));

            Console.WriteLine($"{this.Id} gardener completed the work");
        }
Example #3
0
 public void CultivateFromLeftToRight(Garden garden)
 {
     try
     {
         for (int i = 0; i < garden.GardenCells.Count; i++)
         {
             if (garden.GardenCells[i].WillBeSkipped == true && garden.GardenCells[i].IsSkipped == false)
             {
                 garden.GardenCells[i].WillBeSkipped = false;
                 garden.GardenCells[i].IsSkipped     = true;
                 Console.WriteLine($"Cell with number \"-1\" has been skipped");
             }
             else if (garden.GardenCells[i].IsCultivated == false && garden.GardenCells[i].IsSkipped == false)
             {
                 garden.GardenCells[i].IsCultivated = true;
                 Console.WriteLine($"Garden cell number {garden.GardenCells[i].CellNumber} has been cultivated by {this.Id} gardener");
                 Thread.Sleep(500);
             }
         }
     }
     catch (Exception)
     {
         Console.WriteLine("Something went wrong");
     }
 }
Example #4
0
 public void CultivateUpwards(Garden garden, int[,] gardenCellCoordinates)
 {
     try
     {
         for (int i = garden.GetLengthOfEachRow(gardenCellCoordinates) - 1; i >= 0; i--)
         {
             for (int j = garden.GetRows(gardenCellCoordinates) - 1; j >= 0; j--)
             {
                 foreach (var VARIABLE in garden.GardenCells)
                 {
                     if (VARIABLE.WillBeSkipped == true && VARIABLE.IsSkipped == false)
                     {
                         VARIABLE.WillBeSkipped = false;
                         VARIABLE.IsSkipped     = true;
                         Console.WriteLine($"Cell with number \"-1\" has been skipped");
                     }
                     else if (VARIABLE.CellNumber == gardenCellCoordinates[j, i] && VARIABLE.IsCultivated == false && VARIABLE.IsSkipped == false)
                     {
                         VARIABLE.IsCultivated = true;
                         Console.WriteLine($"Garden cell number {VARIABLE.CellNumber} has been cultivated by {this.Id} gardener");
                         Thread.Sleep(500);
                     }
                 }
             }
         }
     }
     catch (Exception)
     {
         Console.WriteLine("Something went wrong");
     }
 }
Example #5
0
        static void Main(string[] args)
        {
            try
            {
                Console.WriteLine("All cells with number \"-1\" are impassable and shouldn't be cultivated\n");

                int[,] gardenCellCoordinates =
                {
                    {  0,  1,  2,  3,  4,  5 },
                    {  6, -1,  8,  9, 10, 11 },
                    { 12, 13, 14, -1, 16, 17 },
                    { 18, 19, 20, 21, 22, 23 }
                };

                Garden garden = new Garden(gardenCellCoordinates);

                Gardener gardener1 = new Gardener()
                {
                    Id = 1
                };
                Gardener gardener2 = new Gardener()
                {
                    Id = 2
                };

                gardener2.CultivateUpwardsAsync(garden, gardenCellCoordinates);

                gardener1.CultivateFromLeftToRightAsync(garden);

                Console.ReadLine();
            }
            catch (Exception)
            {
                Console.WriteLine("Something went wrong");
            }
        }