Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Diagnostics;
- using System.Reflection.Metadata.Ecma335;
- using System.Threading.Channels;
- namespace Zoo
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- Zoo zoo = new Zoo();
- zoo.Work();
- }
- }
- class Zoo
- {
- private List<Animal> _typeAnimal = new List<Animal>();
- private List<Aviary> _aviaries = new List<Aviary>();
- public Zoo()
- {
- _typeAnimal.Add(new Fox());
- _typeAnimal.Add(new Bear());
- _typeAnimal.Add(new Wolf());
- _typeAnimal.Add(new Gorilla());
- CreateAllAviary();
- }
- public void Work()
- {
- const int CommandChooseAviary = 1;
- const int CommandLeave = 2;
- bool isWorking = true;
- while (isWorking)
- {
- Console.WriteLine("Стенд с информацией о вальерах.\n\n");
- ShowAviariesName();
- Console.WriteLine($"\n\nВыберете команду.\n" +
- $"Чтобы выбрать вальер нажмите - {CommandChooseAviary}\n" +
- $"Чтобы уйти из зоопарка нажмите - {CommandLeave}\n");
- switch (UserUnits.ReadNumber())
- {
- case CommandChooseAviary:
- ChooseAviary().ShowInfo();
- break;
- case CommandLeave:
- isWorking = false;
- break;
- default:
- Console.WriteLine("Неизвестная команда.");
- break;
- }
- Console.ReadKey();
- Console.Clear();
- }
- }
- private void CreateAllAviary()
- {
- for (int i = 0; _typeAnimal.Count > i; i++)
- {
- Aviary aviary = new Aviary(_typeAnimal[i]);
- _aviaries.Add(aviary);
- }
- }
- private Aviary ChooseAviary()
- {
- Console.WriteLine("Введите номер вальера к которому хотите подойти:");
- int userInput = UserUnits.ReadNumber();
- return _aviaries[userInput - 1];
- }
- private void ShowAviariesName()
- {
- for (int i = 0; _aviaries.Count > i; i++)
- {
- Console.WriteLine(i + 1 + " " + _aviaries[i].GetName());
- }
- }
- }
- class Aviary
- {
- private List<Animal> _animals = new List<Animal>();
- private int _maxCountAnimals = 15;
- private int _minCountAnimals = 1;
- public Aviary(Animal animal)
- {
- Create(animal);
- }
- public void Create(Animal animal)
- {
- int countOfAnimals = UserUnits.GetRandomNumber(_minCountAnimals, _maxCountAnimals);
- for (int i = 0; i < countOfAnimals; i++)
- {
- _animals.Add(animal.Clone());
- }
- }
- public string GetName()
- {
- return _animals[0].Name;
- }
- public void ShowInfo()
- {
- Console.WriteLine($"В этом вальере обитает {_animals[0].Name}.\n" +
- $"{_animals[0].Name} издает {_animals[0].VoiceSound}.\n" +
- $"Количество животных в вальере {_animals.Count}.\n\n");
- Console.WriteLine("Список всех животных их возраст и пол:");
- foreach (Animal animal in _animals)
- {
- Console.WriteLine($"{animal.Name} - возраст {animal.Age} - пол {animal.Gender}");
- }
- }
- }
- abstract class Animal
- {
- private int _age;
- private string _gender;
- public Animal(string name, string voiceSound)
- {
- Name = name;
- VoiceSound = voiceSound;
- SetRandomAge();
- SetRandomGender();
- }
- public string Name { get; private set; }
- public string VoiceSound { get; private set; }
- public int Age { get; private set; }
- public string Gender { get; private set; }
- public void SetRandomGender()
- {
- string genderMale = "самец";
- string genderFemale = "самка";
- if (UserUnits.GetRandomNumber() % 2 == 0)
- {
- Gender = genderFemale;
- }
- else
- {
- Gender = genderMale;
- }
- }
- virtual public void SetRandomAge(int maxAge = 50, int minAge = 1)
- {
- Age = UserUnits.GetRandomNumber(minAge, maxAge);
- }
- abstract public Animal Clone();
- }
- class Fox : Animal
- {
- public Fox() : base("Лиса", "Лай")
- {
- SetRandomAge();
- SetRandomGender();
- }
- public override void SetRandomAge(int maxAge = 25, int minAge = 1)
- {
- base.SetRandomAge(maxAge, minAge);
- }
- public override Animal Clone()
- {
- return new Fox();
- }
- }
- class Bear : Animal
- {
- public Bear() : base("Медведь", "Рык")
- {
- }
- public override Animal Clone()
- {
- return new Bear();
- }
- }
- class Gorilla : Animal
- {
- public Gorilla() : base("Горилла", "Рык и звук похожий на \"хм\"")
- {
- }
- public override Animal Clone()
- {
- return new Gorilla();
- }
- }
- class Wolf : Animal
- {
- public Wolf() : base("Волк", "Вой")
- {
- SetRandomAge();
- SetRandomGender();
- }
- public override void SetRandomAge(int maxAge = 17, int minAge = 1)
- {
- base.SetRandomAge(maxAge, minAge);
- }
- public override Animal Clone()
- {
- return new Wolf();
- }
- }
- class UserUnits
- {
- private static Random s_random = new Random();
- public static int GetRandomNumber(int min = int.MinValue, int max = int.MaxValue)
- {
- return s_random.Next(min, max);
- }
- public static int ReadNumber()
- {
- bool isNumber = false;
- int result = 0;
- while (isNumber == false)
- {
- isNumber = int.TryParse(Console.ReadLine(), out result);
- }
- return result;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment