Advertisement
holllowknight

Аквариум

Apr 30th, 2023 (edited)
1,006
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.55 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace aquarius
  5. {
  6.     class Program
  7.     {
  8.         private const int CommandAddFish = 1;
  9.         private const int CommandRemoveFish = 2;
  10.         private const int CommandWait = 3;
  11.         private const int CommandShowInfo = 4;
  12.         private const int CommandExit = 5;
  13.  
  14.         static void Main(string[] args)
  15.         {
  16.             Aquarium aquarium = new Aquarium();
  17.             bool isRunning = true;
  18.  
  19.             while (isRunning)
  20.             {
  21.                 Console.Clear();
  22.                 Console.WriteLine($"{CommandAddFish} Добавить рыбу");
  23.                 Console.WriteLine($"{CommandRemoveFish} Извлечь рыбу");
  24.                 Console.WriteLine($"{CommandWait} Подождать");
  25.                 Console.WriteLine($"{CommandShowInfo} Показать информацию");
  26.                 Console.WriteLine($"{CommandExit} Выйти из программы");
  27.                 int userCommand = UserUtils.GetNumberFromUser();
  28.  
  29.                 switch (userCommand)
  30.                 {
  31.                     case CommandAddFish:
  32.                         aquarium.AddFish();
  33.                         break;
  34.  
  35.                     case CommandRemoveFish:
  36.                         aquarium.RemoveFish();
  37.                         break;
  38.  
  39.                     case CommandWait:
  40.                         aquarium.Wait();
  41.                         break;
  42.  
  43.                     case CommandShowInfo:
  44.                         aquarium.ShowInfo();
  45.                         break;
  46.  
  47.                     case CommandExit:
  48.                         isRunning = false;
  49.                         break;
  50.                 }
  51.             }
  52.         }
  53.     }
  54.  
  55.     class UserUtils
  56.     {
  57.         public static int GetNumberFromUser()
  58.         {
  59.             string userInput;
  60.             int userNumber;
  61.             bool isNumber = false;
  62.  
  63.             do
  64.             {
  65.                 userInput = Console.ReadLine();
  66.                 isNumber = int.TryParse(userInput, out userNumber);
  67.             }
  68.             while ((isNumber == false) || (userNumber < 0));
  69.  
  70.             return userNumber;
  71.         }
  72.     }
  73.  
  74.     class Aquarium
  75.     {
  76.         private List<Fish> _fish;
  77.  
  78.         public Aquarium()
  79.         {
  80.             _fish = new List<Fish>();
  81.         }
  82.  
  83.         public void AddFish()
  84.         {
  85.             Console.WriteLine("Рыбку какого вида вы хотите добавить?");
  86.             string species = Console.ReadLine();
  87.             Console.WriteLine("Каков возраст рыбки?");
  88.             int age = UserUtils.GetNumberFromUser();
  89.             Fish newFish = new Fish(species, age);
  90.             _fish.Add(newFish);
  91.         }
  92.  
  93.         public void RemoveFish()
  94.         {
  95.             Console.WriteLine("Рыбку с каким индексом удалить?");
  96.             int index = UserUtils.GetNumberFromUser() - 1;
  97.  
  98.             if (index < _fish.Count)
  99.                 _fish.RemoveAt(index);
  100.             else
  101.                 Console.WriteLine("Рыбки с таким индексом в аквариуме нет");
  102.         }
  103.  
  104.         public void Wait()
  105.         {
  106.             Console.WriteLine("Сколько времени подождать?");
  107.             int waitingTime = UserUtils.GetNumberFromUser();
  108.  
  109.             foreach (Fish fish in _fish)
  110.                 fish.GrowOld(waitingTime);
  111.         }
  112.  
  113.         public void ShowInfo()
  114.         {
  115.             for (int i = 0; i < _fish.Count; i++)
  116.                 Console.WriteLine($"{i + 1} {_fish[i].GetInfo()}");
  117.  
  118.             Console.ReadKey();
  119.         }
  120.     }
  121.  
  122.     class Fish
  123.     {
  124.         private int _maxLifetime = 100;
  125.         private int _age;
  126.         private int _maxAge;
  127.  
  128.         public Fish(string species, int age = 0)
  129.         {
  130.             Random random = new Random();
  131.             _maxAge = random.Next(_maxLifetime);
  132.             _age = 0;
  133.             Species = species;
  134.             GrowOld(age);
  135.         }
  136.  
  137.         public bool IsAlive => _age <= _maxAge;
  138.         public string Species { get; private set; }
  139.  
  140.         public void GrowOld(int time)
  141.         {
  142.             if (IsAlive == false)
  143.                 return;
  144.  
  145.             _age += time;
  146.         }
  147.  
  148.         public string GetInfo()
  149.         {
  150.             string info;
  151.  
  152.             if (IsAlive)
  153.                 info = string.Format($"{Species}, возраст: {_age}");
  154.             else
  155.                 info = string.Format($"{Species}, неживая");
  156.  
  157.             return info;
  158.         }
  159.     }
  160. }
  161.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement