Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- namespace OOPTask11Aquarium
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- Aquarium aquarium = new Aquarium();
- aquarium.Work();
- }
- }
- public class Aquarium
- {
- const int MinimumFishAge = 3;
- const int MaximumFishAge = 15;
- const int MaximumFishsCount = 10;
- private List<Fish> _fishs = new List<Fish>();
- public void Work()
- {
- const string CommandAdd = "1";
- const string CommandRemove = "2";
- const string CommandExit = "3";
- bool isWorking = true;
- string userInput;
- while (isWorking)
- {
- ShowInfo();
- Console.WriteLine("\nДоступны следующие действия:");
- Console.WriteLine($"\n{CommandAdd} - добавить новую рыбку");
- Console.WriteLine($"{CommandRemove} - вытащить рыбку");
- Console.WriteLine($"{CommandExit} - выход");
- Console.Write("\nВведите команду или просто нажмите Ввод для продолжения: ");
- userInput = Console.ReadLine();
- switch (userInput)
- {
- case CommandAdd:
- AddFish();
- break;
- case CommandRemove:
- RemoveFish();
- break;
- case CommandExit:
- isWorking = false;
- break;
- }
- BecomeFishOlder();
- Console.WriteLine("\nДля продолжения нажмите любую кнопку...");
- Console.ReadKey();
- Console.Clear();
- }
- Console.WriteLine("\nДо свидания!");
- }
- private void AddFish()
- {
- Console.Clear();
- if(_fishs.Count >= MaximumFishsCount)
- {
- Console.WriteLine("\nНевозможно добавить рыбку, аквариум переполнен.");
- return;
- }
- Console.Write("\nВведите имя новой рыбки: ");
- string name = Console.ReadLine();
- int maximumAge = UserUtils.GenerateRandomNumber(MinimumFishAge, MaximumFishAge);
- _fishs.Add(new Fish(name, maximumAge));
- Console.WriteLine($"\nВстречайте нового житекля аквариума: {name}.");
- Console.WriteLine($"Оракул сказал, что рыбка проживет {maximumAge} лет.");
- }
- private void RemoveFish()
- {
- if(IsEmpty())
- return;
- Console.Clear();
- ShowInfo();
- Console.Write("\nВведите номер рыбки, которую хотите вытащить: ");
- int fishIndex = ReadFishIndex();
- _fishs.RemoveAt(fishIndex);
- Console.WriteLine("\nРыбка успешно покинула аквариум");
- }
- private void BecomeFishOlder()
- {
- if (IsEmpty())
- return;
- Console.WriteLine("\nПрошел еще год и рыбки постарели");
- foreach (Fish fish in _fishs)
- {
- fish.BecomeOlder();
- }
- }
- private bool IsEmpty()
- {
- if (_fishs.Count == 0)
- {
- Console.WriteLine("В аквариуме нет рыб.");
- return true;
- }
- else
- {
- return false;
- }
- }
- private void ShowInfo()
- {
- int fishNumber = 1;
- Console.WriteLine($"В аквариуме {_fishs.Count} рыб\n");
- foreach (Fish fish in _fishs)
- {
- Console.Write($"{fishNumber++} - ");
- fish.ShowInfo();
- }
- }
- private int ReadFishIndex()
- {
- bool isCorrectIndex = false;
- int fishIndex = 0;
- while (isCorrectIndex == false)
- {
- fishIndex = ReadInt() - 1;
- if ( fishIndex >= 0 && fishIndex < _fishs.Count)
- {
- isCorrectIndex = true;
- }
- }
- return fishIndex;
- }
- private int ReadInt()
- {
- int number;
- while (int.TryParse(Console.ReadLine(), out number) == false)
- {
- Console.Write("это не число, попробуйте еще раз: ");
- }
- return number;
- }
- }
- public class Fish
- {
- private string _name;
- private int _age;
- private int _maximumAge;
- public Fish(string name, int maximumAge)
- {
- _name = name;
- _age = 0;
- _maximumAge = maximumAge;
- }
- public bool IsAlive => _age <= _maximumAge;
- public void BecomeOlder()
- {
- _age++;
- }
- public void ShowInfo()
- {
- Console.Write($"Рыбке {_name} {_age} лет из максимума {_maximumAge}. ");
- if (IsAlive)
- {
- Console.WriteLine("Рыбка жива.");
- }
- else
- {
- Console.WriteLine("РЫБКА УЖЕ СДОХЛА!");
- }
- }
- }
- public class UserUtils
- {
- private static Random s_random = new Random();
- public static int GenerateRandomNumber(int minimumNumber, int maximumNumber)
- {
- return s_random.Next(minimumNumber, maximumNumber);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement