Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace ZooApp
- {
- public class Program
- {
- static void Main(string[] args)
- {
- AviaryCreator aviaryCreator = new AviaryCreator();
- List<Aviary> aviaries = aviaryCreator.GetAviaries();
- Zoo zoo = new Zoo(aviaries);
- zoo.Run();
- }
- }
- public enum Genders
- {
- Male,
- Female,
- }
- public class Animal
- {
- public Animal(string animalType, string sound)
- {
- AnimalType = animalType;
- Sound = sound;
- CreateRandomGender();
- }
- public string AnimalType { get; private set; }
- public string Sound { get; private set; }
- public Genders Gender { get; private set; }
- private void CreateRandomGender()
- {
- Genders gender = (Genders)UserUtils.BaseRandomGenerator(Enum.GetValues(typeof(Genders)).Length);
- Gender = gender;
- }
- }
- public class Aviary
- {
- private readonly List<Animal> _animals;
- public Aviary(string name, List<Animal> animals)
- {
- Name = name;
- _animals = animals;
- }
- public string Name { get; private set; }
- public void DisplayInfo()
- {
- Console.WriteLine($"Вольер: {Name}");
- Console.WriteLine($"Количество животных: {_animals.Count}");
- Console.WriteLine("Информация о животных:");
- foreach (Animal animal in _animals)
- {
- Console.WriteLine($"-Животное: {animal.AnimalType}| Пол: {animal.Gender}, Звук: {animal.Sound}");
- }
- }
- }
- class AviaryCreator
- {
- private readonly List<Aviary> _aviarys;
- private readonly AnimalCreator _createAnimal;
- public AviaryCreator()
- {
- _aviarys = new List<Aviary>();
- _createAnimal = new AnimalCreator();
- InitializeAviary();
- }
- public List<Aviary> GetAviaries()
- {
- return _aviarys.ToList();
- }
- private void InitializeAviary()
- {
- _aviarys.Add(new Aviary("Львиный вольер", _createAnimal.CreateAnimals(new Animal("Лев", "Rour"))));
- _aviarys.Add(new Aviary("Крокодилий вольер", _createAnimal.CreateAnimals(new Animal("Крокодил", "Growl"))));
- _aviarys.Add(new Aviary("Обезьяний вольер", _createAnimal.CreateAnimals(new Animal("Обезьяна", "Laugh"))));
- _aviarys.Add(new Aviary("Вольер с хищными птицами", _createAnimal.CreateAnimals(new Animal("Птица", "Squeak"))));
- }
- }
- public class AnimalCreator
- {
- public List<Animal> CreateAnimals(Animal animal)
- {
- List<Animal> animals = new List<Animal>();
- int animalCount = UserUtils.GenerateRandom(0, 10);
- for (int i = 0; i < animalCount; i++)
- {
- animals.Add(new Animal(animal.AnimalType, animal.Sound));
- }
- return animals;
- }
- }
- public class Zoo
- {
- private readonly List<Aviary> _aviarys;
- public Zoo(List<Aviary> aviarys)
- {
- _aviarys = aviarys;
- }
- public void Run()
- {
- const int ExitCommand = 0;
- bool isWorking = true;
- while (isWorking)
- {
- Console.Clear();
- Console.WriteLine("Выберите вольер, к которому вы хотите подойти:\n");
- ShowAviarys();
- Console.WriteLine($"\n{ExitCommand}. Выход");
- Console.Write("\nВведите номер: ");
- EnterAviary(ref isWorking, ExitCommand);
- }
- }
- private void ShowAviarys()
- {
- for (int i = 0; i < _aviarys.Count; i++)
- {
- Console.WriteLine($"{i + 1}. {_aviarys[i].Name}");
- }
- }
- private void EnterAviary(ref bool isWorking, int exitCommand)
- {
- if (int.TryParse(Console.ReadLine(), out int choice))
- {
- if (choice == exitCommand)
- {
- isWorking = false;
- }
- else if (choice >= 1 && choice <= _aviarys.Count)
- {
- Console.Clear();
- Aviary selectedAviary = _aviarys[choice - 1];
- selectedAviary.DisplayInfo();
- Console.WriteLine("Нажмите Enter, чтобы вернуться в меню.");
- Console.ReadLine();
- }
- else
- {
- Console.WriteLine("Неверный выбор. Попробуйте еще раз.");
- Console.ReadLine();
- }
- }
- else
- {
- Console.WriteLine("Некорректный ввод. Пожалуйста, введите число.");
- Console.ReadLine();
- }
- }
- }
- class UserUtils
- {
- private static Random s_random = new Random();
- public static int GenerateRandom(int maxValue)
- {
- return s_random.Next(0, maxValue + 1);
- }
- public static int GenerateRandom(int minValue, int maxValue)
- {
- return s_random.Next(minValue, maxValue + 1);
- }
- public static int BaseRandomGenerator(int maxValue)
- {
- return s_random.Next(0, maxValue);
- }
- public static int BaseRandomGenerator(int minValue, int maxValue)
- {
- return s_random.Next(minValue, maxValue);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement