Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace OOPTask12Zoo
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- Zoo zoo = new Zoo();
- zoo.Work();
- }
- }
- public class Zoo
- {
- private List<Enclosure> _enclosures = new List<Enclosure>();
- public Zoo()
- {
- CreateEnclosures();
- }
- private void CreateEnclosures()
- {
- const int MinimumAnimalsCount = 5;
- const int MaximumAnimalsCount = 20;
- Dictionary<string, string> enclosures = new Dictionary<string, string>();
- Dictionary<string, string> animals = new Dictionary<string, string>();
- enclosures.Add("клетка", "защищающая со всех сторон");
- enclosures.Add("бассейн", "для животных, любящих воду");
- enclosures.Add("загон", "окруженный забором");
- enclosures.Add("террариум", "с особым микроклиматом");
- animals.Add("лев", "рычит");
- animals.Add("тигр", "мурчит");
- animals.Add("медведь", "рявкает");
- animals.Add("собака", "гавкает");
- animals.Add("кошка", "мяукает");
- animals.Add("крокодил", "молчит");
- animals.Add("осел", "и-а");
- animals.Add("комар", "жузжит");
- animals.Add("соловей", "поет");
- animals.Add("кукушка", "врет");
- animals.Add("дундук", "гонит");
- animals.Add("ламер", "плачет");
- foreach (string enclosureName in enclosures.Keys)
- {
- Enclosure enclosure = new Enclosure(enclosureName, enclosures[enclosureName]);
- int animalsCount = UserUtils.GenerateRandomNumber(MinimumAnimalsCount, MaximumAnimalsCount);
- for (int i = 0; i < animalsCount; i++)
- {
- string randomAnimalName = animals.Keys.ElementAt(UserUtils.GenerateRandomNumber(0, animals.Count));
- enclosure.AddAnimal(randomAnimalName, animals[randomAnimalName]);
- }
- _enclosures.Add(enclosure);
- }
- }
- public void Work()
- {
- const char CommandExit = 'q';
- bool isWorking = true;
- while (isWorking)
- {
- ShowInfo();
- Console.Write("\nВведите номер вольера, к которому хотите подойти: ");
- int enclosureIndex = ReadEnclosureIndex();
- Console.Clear();
- _enclosures[enclosureIndex].ShowInfo();
- Console.WriteLine($"\nДля продолжения прогулки по зооппарку нажмите любую клавишу или {CommandExit} для выхода...");
- if(Console.ReadKey().KeyChar == CommandExit)
- isWorking = false;
- Console.Clear();
- }
- Console.WriteLine("\nДо свидания!");
- }
- private void ShowInfo()
- {
- int enclosureNumber = 1;
- Console.WriteLine($"В зоопарке {_enclosures.Count} вольеров\n");
- foreach (Enclosure enclosure in _enclosures)
- {
- Console.Write($"{enclosureNumber++} - ");
- enclosure.ShowShortInfo();
- }
- }
- private int ReadEnclosureIndex()
- {
- bool isCorrectIndex = false;
- int enclosureIndex = 0;
- while (isCorrectIndex == false)
- {
- enclosureIndex = ReadInt() - 1;
- if (enclosureIndex >= 0 && enclosureIndex < _enclosures.Count)
- {
- isCorrectIndex = true;
- }
- else
- {
- Console.Write("Такого номера вольера не существует, попробуйте еще раз: ");
- }
- }
- return enclosureIndex;
- }
- private int ReadInt()
- {
- int number;
- while (int.TryParse(Console.ReadLine(), out number) == false)
- {
- Console.Write("это не число, попробуйте еще раз: ");
- }
- return number;
- }
- }
- public class Enclosure
- {
- private string _name;
- private string _description;
- private List<Animal> _animals = new List<Animal>();
- public Enclosure(string name, string description)
- {
- _name = name;
- _description = description;
- }
- public void ShowShortInfo()
- {
- Console.WriteLine($"Вольер \"{_name}\" - {_description}, содержит {_animals.Count} животных");
- }
- public void ShowInfo()
- {
- ShowShortInfo();
- Console.WriteLine();
- foreach (Animal animal in _animals)
- {
- animal.ShowInfo();
- }
- }
- public void AddAnimal(string name, string sound)
- {
- _animals.Add(new Animal(name, sound));
- }
- }
- enum Gender
- {
- male,
- female
- }
- public class Animal
- {
- private string _name;
- private string _sound;
- private Gender _gender;
- public Animal(string name, string sound)
- {
- _name = name;
- _sound = sound;
- if (UserUtils.GenerateHalfProbability())
- _gender = Gender.male;
- else
- _gender = Gender.female;
- }
- public void ShowInfo()
- {
- Console.Write($"{_name}, ");
- if (_gender == Gender.male)
- {
- Console.Write("мальчик");
- }
- else
- {
- Console.Write("девочка");
- }
- Console.WriteLine($", {_sound}");
- }
- }
- public class UserUtils
- {
- private const int MinimumPercent = 0;
- private const int MaximumPercent = 100;
- private const int HalfPercent = 50;
- private static Random s_random = new Random();
- public static int GenerateRandomNumber(int minimumNumber, int maximumNumber)
- {
- return s_random.Next(minimumNumber, maximumNumber);
- }
- public static bool GenerateHalfProbability()
- {
- return s_random.Next(MinimumPercent, MaximumPercent) < HalfPercent;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement