Advertisement
SPavelA

OOPTask11Aquarium

Oct 27th, 2024
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.08 KB | Gaming | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace OOPTask11Aquarium
  5. {
  6.     internal class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             Aquarium aquarium = new Aquarium();
  11.  
  12.             aquarium.Work();
  13.         }
  14.     }
  15.  
  16.     public class Aquarium
  17.     {
  18.         const int MinimumFishAge = 3;
  19.         const int MaximumFishAge = 15;
  20.         const int MaximumFishsCount = 10;
  21.  
  22.         private List<Fish> _fishs = new List<Fish>();
  23.  
  24.         public void Work()
  25.         {
  26.             const string CommandAdd = "1";
  27.             const string CommandRemove = "2";
  28.             const string CommandExit = "3";
  29.  
  30.             bool isWorking = true;
  31.             string userInput;
  32.  
  33.             while (isWorking)
  34.             {
  35.                 ShowInfo();
  36.                 Console.WriteLine("\nДоступны следующие действия:");
  37.                 Console.WriteLine($"\n{CommandAdd} - добавить новую рыбку");
  38.                 Console.WriteLine($"{CommandRemove} - вытащить рыбку");
  39.                 Console.WriteLine($"{CommandExit} - выход");
  40.                 Console.Write("\nВведите команду или просто нажмите Ввод для продолжения: ");
  41.                 userInput = Console.ReadLine();
  42.  
  43.                 switch (userInput)
  44.                 {
  45.                     case CommandAdd:
  46.                         AddFish();
  47.                         break;
  48.  
  49.                     case CommandRemove:
  50.                         RemoveFish();
  51.                         break;
  52.  
  53.                     case CommandExit:
  54.                         isWorking = false;
  55.                         break;
  56.                 }
  57.                
  58.                 BecomeFishOlder();
  59.                 Console.WriteLine("\nДля продолжения нажмите любую кнопку...");
  60.                 Console.ReadKey();
  61.                 Console.Clear();
  62.             }
  63.  
  64.             Console.WriteLine("\nДо свидания!");
  65.         }
  66.  
  67.         private void AddFish()
  68.         {
  69.             Console.Clear();
  70.  
  71.             if(_fishs.Count >= MaximumFishsCount)
  72.             {
  73.                 Console.WriteLine("\nНевозможно добавить рыбку, аквариум переполнен.");
  74.                 return;
  75.             }
  76.  
  77.             Console.Write("\nВведите имя новой рыбки: ");
  78.  
  79.             string name = Console.ReadLine();
  80.             int maximumAge = UserUtils.GenerateRandomNumber(MinimumFishAge, MaximumFishAge);
  81.  
  82.             _fishs.Add(new Fish(name, maximumAge));
  83.             Console.WriteLine($"\nВстречайте нового житекля аквариума: {name}.");
  84.             Console.WriteLine($"Оракул сказал, что рыбка проживет {maximumAge} лет.");
  85.         }
  86.  
  87.         private void RemoveFish()
  88.         {
  89.             if(IsEmpty())
  90.                 return;
  91.  
  92.             Console.Clear();
  93.             ShowInfo();
  94.             Console.Write("\nВведите номер рыбки, которую хотите вытащить: ");
  95.  
  96.             int fishIndex = ReadFishIndex();
  97.  
  98.             _fishs.RemoveAt(fishIndex);
  99.             Console.WriteLine("\nРыбка успешно покинула аквариум");
  100.         }
  101.  
  102.         private void BecomeFishOlder()
  103.         {
  104.             if (IsEmpty())
  105.                 return;
  106.  
  107.             Console.WriteLine("\nПрошел еще год и рыбки постарели");
  108.  
  109.             foreach (Fish fish in _fishs)
  110.             {
  111.                 fish.BecomeOlder();
  112.             }
  113.         }
  114.  
  115.         private bool IsEmpty()
  116.         {
  117.             if (_fishs.Count == 0)
  118.             {
  119.                 Console.WriteLine("В аквариуме нет рыб.");
  120.                 return true;
  121.             }
  122.             else
  123.             {
  124.                 return false;
  125.             }
  126.         }
  127.  
  128.         private void ShowInfo()
  129.         {
  130.             int fishNumber = 1;
  131.  
  132.             Console.WriteLine($"В аквариуме {_fishs.Count} рыб\n");
  133.  
  134.             foreach (Fish fish in _fishs)
  135.             {
  136.                 Console.Write($"{fishNumber++} - ");
  137.                 fish.ShowInfo();
  138.             }
  139.         }
  140.  
  141.         private int ReadFishIndex()
  142.         {
  143.             bool isCorrectIndex = false;
  144.             int fishIndex = 0;
  145.  
  146.             while (isCorrectIndex == false)
  147.             {
  148.                 fishIndex = ReadInt() - 1;
  149.  
  150.                 if ( fishIndex >= 0 && fishIndex < _fishs.Count)
  151.                 {
  152.                     isCorrectIndex = true;
  153.                 }
  154.             }
  155.  
  156.             return fishIndex;
  157.         }
  158.  
  159.         private int ReadInt()
  160.         {
  161.             int number;
  162.  
  163.             while (int.TryParse(Console.ReadLine(), out number) == false)
  164.             {
  165.                 Console.Write("это не число, попробуйте еще раз: ");
  166.             }
  167.  
  168.             return number;
  169.         }
  170.     }
  171.  
  172.     public class Fish
  173.     {
  174.         private string _name;
  175.         private int _age;
  176.         private int _maximumAge;
  177.  
  178.         public Fish(string name, int maximumAge)
  179.         {
  180.             _name = name;
  181.             _age = 0;
  182.             _maximumAge = maximumAge;
  183.         }
  184.  
  185.         public bool IsAlive => _age <= _maximumAge;
  186.  
  187.         public void BecomeOlder()
  188.         {
  189.             _age++;
  190.         }
  191.  
  192.         public void ShowInfo()
  193.         {
  194.             Console.Write($"Рыбке {_name} {_age} лет из максимума {_maximumAge}. ");
  195.  
  196.             if (IsAlive)
  197.             {
  198.                 Console.WriteLine("Рыбка жива.");
  199.             }
  200.             else
  201.             {
  202.                 Console.WriteLine("РЫБКА УЖЕ СДОХЛА!");
  203.             }
  204.         }
  205.     }
  206.  
  207.     public class UserUtils
  208.     {
  209.         private static Random s_random = new Random();
  210.  
  211.         public static int GenerateRandomNumber(int minimumNumber, int maximumNumber)
  212.         {
  213.             return s_random.Next(minimumNumber, maximumNumber);
  214.         }
  215.     }
  216. }
  217.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement