Advertisement
IGRODELOFF

Task48.6

Aug 2nd, 2022 (edited)
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.99 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Task48._1
  8. {
  9.     internal class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             Aquarium aquarium = new Aquarium();
  14.             aquarium.Work();
  15.         }
  16.     }
  17.  
  18.     class Aquarium
  19.     {
  20.         private static int _maxCountFish = 10;
  21.         private List<Fish> _aquariumFish = new List<Fish>(_maxCountFish);
  22.         private List<Fish> _availableFish = new List<Fish>();
  23.         private Random _random = new Random();
  24.  
  25.         private int _index = 0;
  26.  
  27.         public void Work()
  28.         {
  29.             int index = 1;
  30.  
  31.             bool isExit = false;
  32.  
  33.             string meny =
  34.                 "Добавить --- добавить рыбу в аквариум\n" +
  35.                 "Убрать ----- убрать рыбу из аквариума\n" +
  36.                 "Уйти ------- бросить этот аквариум и пойди делать более важные дела\n" +
  37.                 "====================================================================";
  38.             string requestCommand =
  39.                 "Введите команду: ";
  40.  
  41.             while (isExit == false)
  42.             {
  43.                 ChooseFish();
  44.                 Show(_aquariumFish);
  45.  
  46.                 Console.WriteLine(meny);
  47.                 Console.Write(requestCommand);
  48.  
  49.                 string userInput = Console.ReadLine();
  50.                 switch (userInput)
  51.                 {
  52.                     case "Добавить":
  53.                         AddFish(ref index);
  54.                         break;
  55.                     case "Убрать":
  56.                         RemoveFish();
  57.                         break;
  58.                     case "Уйти":
  59.                         isExit = true;
  60.                         break;
  61.                     default:
  62.                         Console.WriteLine("Нет такой команды. Вы пропускаете ход.");
  63.                         break;
  64.                 }
  65.  
  66.                 if (_aquariumFish.Count > 0)
  67.                 {
  68.                     foreach (Fish fish in _aquariumFish)
  69.                     {
  70.                         bool isLife = fish.CheckAge();
  71.  
  72.                         if (isLife == true)
  73.                             fish.UseAging();
  74.                         else
  75.                             fish.Death();
  76.                     }
  77.                 }
  78.                 _availableFish.Clear();
  79.             }
  80.         }
  81.  
  82.         private void AddFish(ref int index)
  83.         {
  84.             if (_aquariumFish.Count <= _maxCountFish)
  85.             {
  86.                 Show(_availableFish);
  87.  
  88.                 string requestIndex =
  89.                     "Введите индекс рыбы которую хотите добавить: ";
  90.  
  91.                 int userInput = GetInt(requestIndex);
  92.  
  93.                 foreach (Fish fish in _availableFish)
  94.                 {
  95.                     if (fish.Index == userInput)
  96.                     {
  97.                         fish.ChangeIndex(index);
  98.                         _aquariumFish.Add(fish);
  99.                         index++;
  100.                     }
  101.                 }
  102.             }
  103.             else
  104.             {
  105.                 Console.WriteLine("В аквариуме нет места, если хотите добавить новую рыбу уберите старую.");
  106.             }
  107.         }
  108.  
  109.         private void RemoveFish()
  110.         {
  111.             if (_aquariumFish.Count >= 0)
  112.             {
  113.                 string requestIndex =
  114.                     "Введите индекс рыбы которую хотите добавить: ";
  115.  
  116.                 int userInput = GetInt(requestIndex);
  117.  
  118.                 foreach (Fish fish in _aquariumFish)
  119.                 {
  120.                     if (fish.Index == userInput)
  121.                     {
  122.                         _aquariumFish.Remove(fish);
  123.                         break;
  124.                     }
  125.                 }
  126.             }
  127.             else
  128.             {
  129.                 Console.WriteLine("В аквариуме нет рыбы, некого убирать.");
  130.             }
  131.         }
  132.  
  133.         private void Show(List<Fish> fishes)
  134.         {
  135.             if (fishes.Count > 0)
  136.             {
  137.                 foreach (Fish fish in fishes)
  138.                 {
  139.                     fish.ShowInfo();
  140.                 }
  141.             }
  142.             else
  143.             {
  144.                 Console.WriteLine(
  145.                     "В аквариуме нет рыбы.\n" +
  146.                     "=======================");
  147.             }
  148.         }
  149.  
  150.         private void ChooseFish()
  151.         {
  152.             int minAge = 5;
  153.             int maxAge = 50;
  154.             int index = 1;
  155.             bool isAlive = true;
  156.  
  157.             _availableFish.Add(new Fish(index++, "Рыба клоун", _random.Next(minAge, maxAge), isAlive,1));
  158.             _availableFish.Add(new Fish(index++, "Cудак", _random.Next(minAge, maxAge), isAlive,2));
  159.             _availableFish.Add(new Fish(index++, "Берш", _random.Next(minAge, maxAge), isAlive,3));
  160.             _availableFish.Add(new Fish(index++, "Окунь", _random.Next(minAge, maxAge), isAlive,4));
  161.             _availableFish.Add(new Fish(index++, "Ерш", _random.Next(minAge, maxAge), isAlive,5));
  162.         }
  163.  
  164.         private int GetInt(string requestInputNumber)
  165.         {
  166.             string errorConversion = "Ошибка,вы вели не цифры! Попробуйте снова.";
  167.             string userInput;
  168.  
  169.             bool resultConverted = false;
  170.  
  171.             int number = 0;
  172.  
  173.             while (resultConverted == false)
  174.             {
  175.                 Console.Write(requestInputNumber);
  176.                 userInput = Console.ReadLine();
  177.  
  178.                 resultConverted = int.TryParse(userInput, out int numberConvert);
  179.  
  180.                 if (resultConverted != true)
  181.                     Console.WriteLine(errorConversion);
  182.                 else
  183.                     number = numberConvert;
  184.             }
  185.             return number;
  186.         }
  187.     }
  188.  
  189.     class Fish
  190.     {
  191.         public string Name { get; protected set; }
  192.         public int Age { get; protected set; }
  193.         public int Index { get; protected set; }
  194.         public bool IsAlive { get; protected set; }
  195.         public int Aging { get; protected set; }
  196.  
  197.         public Fish(int index, string name, int age, bool isAlive, int aging)
  198.         {
  199.             Name = name;
  200.             Age = age;
  201.             Index = index;
  202.             IsAlive = isAlive;
  203.             Aging = aging;
  204.         }
  205.  
  206.         public void ShowInfo()
  207.         {
  208.             Console.WriteLine($"№{Index}.{Name} - возраст - {Age}");
  209.         }
  210.  
  211.         public void Death()
  212.         {
  213.             IsAlive = false;
  214.         }
  215.  
  216.         public void UseAging()
  217.         {
  218.             Age -= Aging;
  219.         }
  220.  
  221.         public bool CheckAge()
  222.         {
  223.             if (Age > 0)
  224.                 return true;
  225.             else
  226.                 return false;
  227.         }
  228.  
  229.         public void ChangeIndex(int newIndex)
  230.         {
  231.             Index = newIndex;
  232.         }
  233.     }
  234.  
  235.     class Clown : Fish
  236.     {
  237.         public Clown(string name, int age, int index, bool isAlive, int aging) : base(index, name, age, isAlive, aging) { }
  238.     }
  239.  
  240.     class Zander : Fish
  241.     {
  242.         public Zander(string name, int age, int index, bool isAlive, int aging) : base(index, name, age, isAlive, aging) { }
  243.     }
  244.     class Bersh : Fish
  245.     {
  246.         public Bersh(string name, int age, int index, bool isAlive, int aging) : base(index, name, age, isAlive, aging) { }
  247.     }
  248.     class Perch : Fish
  249.     {
  250.         public Perch(string name, int age, int index, bool isAlive, int aging) : base(index, name, age, isAlive, aging) { }
  251.     }
  252.     class Ruff : Fish
  253.     {
  254.         public Ruff(string name, int age, int index, bool isAlive, int aging) : base(index, name, age, isAlive, aging) { }
  255.     }
  256. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement