Пример #1
0
Файл: Game.cs Проект: Dr1N/Snake
 /// <summary>
 /// Генерация еды на игровом поле
 /// </summary>
 private void GenerateFood()
 {
     //Генерируем еду, если начало игры, если пришло время, или вся еда съедена
     if (tactCount % this.foodLifeTime != 0 && this.generatedFirstFood && foods.Count != 0)
     {
         return;
     }
     //Если количество еды, что может находится на карте, превышает максиальное - чистим коллекцию еды и консоль
     if (foods.Count >= this.foodAmount)
     {
         this.ClearFood();
         foods.Clear();
     }
     //Генерируем еду в случайном месте игрового поля, если попали в змейку - повторим
     string[] foodSymbols = { "@", "#", "☺", "☻", "♦", "☼" };
     Block food = null;
     int topFood, leftFood;
     bool overlap = true;
     while (overlap)
     {
         //Генерация координат
         topFood = rand.Next(GameAreaOffsetY + 1, GameAreaOffsetY + GameAreaHeight - 1);
         leftFood = rand.Next(GameAreaOffsetX + 1, GameAreaOffsetX + GameAreaLength - 1);
         //Символа (в конструкторе)
         food = new Block(topFood, leftFood, foodSymbols[rand.Next(0, foodSymbols.Length)]);
         //Цвета
         food.Color = (ConsoleColor)rand.Next(9, 16);
         //Проверка не попали ли в змею при генерации
         foreach (Block snakeBlock in snake)
         {
             if (food.Equals(snakeBlock))
             {
                 overlap = true;
                 break;
             }
             else
             {
                 overlap = false;
             }
         }
     }
     this.generatedFirstFood = true;
     this.foods.Add(food);
     this.DrawFood();
 }