lovelyvook

Unit_47

Aug 9th, 2024 (edited)
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.38 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace Ijunior
  5. {
  6.     internal class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             Aquarist aquarist = new Aquarist();
  11.             aquarist.Work();
  12.         }
  13.     }
  14.  
  15.     class Aquarist
  16.     {
  17.         private Aquarium _aquarium;
  18.  
  19.         public Aquarist()
  20.         {
  21.             _aquarium = new Aquarium(CreateDefaultFish(), 10);
  22.         }
  23.  
  24.         public void Work()
  25.         {
  26.             const string CommandAddFish = "1";
  27.             const string CommandRemoveFish = "2";
  28.             const string CommandExit = "3";
  29.  
  30.             bool isWork = true;
  31.  
  32.             while (isWork)
  33.             {
  34.                 _aquarium.ShowInfo();
  35.  
  36.                 Console.Write($"\n{CommandAddFish} - добавить рыбу" +
  37.                               $"\n{CommandRemoveFish} - убрать рыбу" +
  38.                               $"\n{CommandExit} - выйти" +
  39.                               $"\nВведите номер или нажмите любую клавишу для обновления: ");
  40.  
  41.                 switch (Console.ReadLine())
  42.                 {
  43.                     case CommandAddFish:
  44.                         AddFish();
  45.                         break;
  46.  
  47.                     case CommandRemoveFish:
  48.                         RemoveFish();
  49.                         break;
  50.  
  51.                     case CommandExit:
  52.                         isWork = false;
  53.                         break;
  54.  
  55.                     default:
  56.                         _aquarium.UpdateFish();
  57.                         break;
  58.                 }
  59.  
  60.                 Console.ReadLine();
  61.                 Console.Clear();
  62.             }
  63.         }
  64.  
  65.         private List<Fish> CreateDefaultFish()
  66.         {
  67.             List<Fish> fish = new List<Fish>();
  68.             int defaultFishCount = 5;
  69.  
  70.             while (fish.Count < defaultFishCount)
  71.             {
  72.                 fish.Add(CreateFish());
  73.             }
  74.  
  75.             return fish;
  76.         }
  77.  
  78.         private void AddFish()
  79.         {
  80.             if (_aquarium.FishCount < _aquarium.Limit)
  81.             {
  82.                 Fish fish = CreateFish();
  83.                 _aquarium.AddFish(fish);
  84.             }
  85.             else
  86.             {
  87.                 Console.WriteLine("Количество рыб не может превышать лимит: " + _aquarium.Limit);
  88.             }
  89.         }
  90.  
  91.         private Fish CreateFish()
  92.         {
  93.             List<string> fishTypes = new List<string>()
  94.             { "тунец", "минтай", "треска", "горбуша", "скумбрия", "лосось", "угорь", "мойва" };
  95.  
  96.             string name = fishTypes[Utils.GetRandomNumber(0, fishTypes.Count - 1)];
  97.             int currentAge = Utils.GetRandomNumber(0, 10);
  98.             int maxAge = Utils.GetRandomNumber(10, 15);
  99.  
  100.             return new Fish(name, currentAge, maxAge);
  101.         }
  102.  
  103.         private void RemoveFish()
  104.         {
  105.             Console.Write("Введите номер рыбы для удаления: ");
  106.  
  107.             if (int.TryParse(Console.ReadLine(), out int index))
  108.             {
  109.                 if (index > 0 && index <= _aquarium.FishCount)
  110.                     _aquarium.RemoveFish(index - 1);
  111.                 else
  112.                     Console.WriteLine("Такого номера нет");
  113.             }
  114.             else
  115.             {
  116.                 Console.WriteLine("Некорректный ввод");
  117.             }
  118.         }
  119.     }
  120.  
  121.     class Aquarium
  122.     {
  123.         private List<Fish> _fish;
  124.  
  125.         public Aquarium(List<Fish> fish, int limit)
  126.         {
  127.             _fish = fish;
  128.             Limit = limit;
  129.         }
  130.  
  131.         public int Limit { get; }
  132.  
  133.         public int FishCount => _fish.Count;
  134.  
  135.         public void AddFish(Fish fish)
  136.         {
  137.             _fish.Add(fish);
  138.         }
  139.  
  140.         public void RemoveFish(int index)
  141.         {
  142.             _fish.RemoveAt(index);
  143.         }
  144.  
  145.         public void ShowInfo()
  146.         {
  147.             Console.WriteLine($"Рыб в аквариуме {_fish.Count} из {Limit}: \n");
  148.  
  149.             for (int i = 0; i < _fish.Count; i++)
  150.             {
  151.                 Console.Write(i + 1 + " ");
  152.                 _fish[i].ShowInfo();
  153.             }
  154.         }
  155.  
  156.         public void UpdateFish()
  157.         {
  158.             for (int i = _fish.Count - 1; i >= 0; i--)
  159.             {
  160.                 if (_fish[i].IsDead)
  161.                     _fish.RemoveAt(i);
  162.                 else
  163.                     _fish[i].GrowOld();
  164.             }
  165.         }
  166.     }
  167.  
  168.     class Fish
  169.     {
  170.         private string _name;
  171.         private int _currentAge;
  172.         private int _maxAge;
  173.  
  174.         public Fish(string name, int currentAge, int maxAge)
  175.         {
  176.             _name = name;
  177.             _currentAge = currentAge;
  178.             _maxAge = maxAge;
  179.         }
  180.  
  181.         public void ShowInfo()
  182.         {
  183.             Console.WriteLine($"{_name} возраст {_currentAge} из {_maxAge}");
  184.         }
  185.  
  186.         public void GrowOld()
  187.         {
  188.             _currentAge++;
  189.         }
  190.  
  191.         public bool IsDead => _currentAge >= _maxAge;
  192.     }
  193.  
  194.     class Utils
  195.     {
  196.         private static Random s_random = new Random();
  197.  
  198.         public static int GetRandomNumber(int minValue, int maxValue)
  199.         {
  200.             return s_random.Next(minValue, maxValue);
  201.         }
  202.     }
  203. }
Advertisement
Add Comment
Please, Sign In to add comment