Advertisement
viktarb

Аквариум

Oct 24th, 2023 (edited)
961
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.93 KB | Gaming | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Media;
  4.  
  5. internal class Program
  6. {
  7.     static void Main(string[] args)
  8.     {
  9.         Aquarium aquarium = new Aquarium();
  10.         aquarium.Live();
  11.     }
  12. }
  13.  
  14. class Aquarium
  15. {
  16.     private List<Fish> _fish = new List<Fish>();
  17.  
  18.     public Aquarium()
  19.     {
  20.         Fill();
  21.     }
  22.  
  23.     public void Live()
  24.     {
  25.         Console.WriteLine($"Добро пожаловать в игру под названием \"Аквариум. Часть первая. Жизнь\"");
  26.  
  27.         while (FinishGame()) { }
  28.     }
  29.  
  30.     private bool FinishGame()
  31.     {
  32.         const int PasesTime = 1;
  33.         const int AddNewFish = 4;
  34.         const int RemoveFish = 5;
  35.         const int Exit = 9;
  36.  
  37.         bool isWork = true;
  38.  
  39.         Console.WriteLine("Сейчас у Вас в аквариуме есть следующие рыбки:");
  40.         ShowInfo();
  41.  
  42.         Console.WriteLine($"\nВведите команду: \n{PasesTime} - Ничего не делать, пройдёт время, " +
  43.             $"\n{AddNewFish} - Добавить рыбку, \n{RemoveFish} - Достать рыбку,\n{Exit} - Выход из игры.");
  44.  
  45.         switch (ReadInt())
  46.         {
  47.             case PasesTime:
  48.                 Grow();
  49.                 break;
  50.  
  51.             case AddNewFish:
  52.                 this.AddNewFish();
  53.                 break;
  54.  
  55.             case RemoveFish:
  56.                 this.RemoveFish();
  57.                 break;
  58.  
  59.             case Exit:
  60.                 isWork = false;
  61.                 break;
  62.  
  63.             default:
  64.                 Console.WriteLine("\aТак команды нет.");
  65.                 break;
  66.         }
  67.  
  68.         Console.WriteLine("\nНажмите любую клавишу для продолжения.");
  69.         Console.ReadKey();
  70.         Console.Clear();
  71.  
  72.         return isWork;
  73.     }
  74.  
  75.     private void Grow()
  76.     {
  77.         for (int i = 0; i < _fish.Count; i++)
  78.         {
  79.             _fish[i].Grow();
  80.  
  81.             if (_fish[i].IsAlive == false)
  82.             {
  83.                 _fish.Remove(_fish[i]);
  84.                 i--;
  85.             }
  86.         }
  87.     }
  88.  
  89.     private void AddNewFish()
  90.     {
  91.         Console.WriteLine("Введите имя новой рыбки: ");
  92.  
  93.         _fish.Add(new Fish(Console.ReadLine()));
  94.     }
  95.  
  96.     private int ReadInt()
  97.     {
  98.         bool isCorrectInput = false;
  99.         int result = 0;
  100.  
  101.         while (isCorrectInput == false)
  102.         {
  103.             isCorrectInput = int.TryParse(Console.ReadLine(), out result);
  104.  
  105.             if (result <= 0)
  106.             {
  107.                 isCorrectInput = false;
  108.                 Console.WriteLine("\aВведите положительное число!");
  109.             }
  110.         }
  111.  
  112.         return result;
  113.     }
  114.  
  115.     private Fish GetFish()
  116.     {
  117.         Fish fishFoundet = null;
  118.         bool isFoundIndexFish = false;
  119.  
  120.         if (_fish.Count == 0)
  121.         {
  122.             isFoundIndexFish = true;
  123.             Console.WriteLine("Увы, аквариум пуст...");
  124.         }
  125.  
  126.         while (isFoundIndexFish == false)
  127.         {
  128.             Console.Write("\nВведите индекс: ");
  129.             int index = ReadInt();
  130.  
  131.             for (int i = 0; i < _fish.Count; i++)
  132.             {
  133.                 if (index == _fish.Count)
  134.                 {
  135.                     isFoundIndexFish = true;
  136.                     fishFoundet = _fish[i];
  137.                 }
  138.             }
  139.  
  140.             if (isFoundIndexFish == false)
  141.             {
  142.                 Console.Write("\a\nВведено не верное значение.");
  143.             }
  144.         }
  145.  
  146.         return fishFoundet;
  147.     }
  148.  
  149.     private void RemoveFish()
  150.     {
  151.         Fish fish = GetFish();
  152.  
  153.         if (fish != null)
  154.         {
  155.             _fish.Remove(fish);
  156.         }
  157.     }
  158.  
  159.     private void Fill()
  160.     {
  161.         _fish.Add(new Fish("Красная", 1, 6));
  162.         _fish.Add(new Fish("Зелёная"));
  163.         _fish.Add(new Fish("Мелкая", 0, 2));
  164.         _fish.Add(new Fish("Долгоживущая", 2, 10));
  165.     }
  166.  
  167.     private void ShowInfo()
  168.     {
  169.         for (int i = 0; i < _fish.Count; i++)
  170.         {
  171.             Console.Write($"\n[{i + 1}] - ");
  172.             _fish[i].ShowInfo();
  173.         }
  174.     }
  175. }
  176.  
  177. class Fish
  178. {
  179.     private string _name;
  180.     private int _lifetime;
  181.     private int _age;
  182.  
  183.     public Fish(string name, int age, int lifetime)
  184.     {
  185.         _name = name;
  186.         _age = age;
  187.         _lifetime = lifetime;
  188.     }
  189.  
  190.     public Fish(string name)
  191.     {
  192.         _name = name;
  193.         _age = 0;
  194.         _lifetime = 5;
  195.     }
  196.  
  197.     public bool IsAlive
  198.     {
  199.         get
  200.         {
  201.             return _age <= _lifetime;
  202.         }
  203.     }
  204.  
  205.     public void ShowInfo()
  206.     {
  207.         Console.Write($"Имя рыбки - {_name}, возраст рыбки - {_age} / {_lifetime}");
  208.     }
  209.  
  210.     public void Grow()
  211.     {
  212.         _age++;
  213.     }
  214. }
Tags: ijunior
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement