/// <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(); }