Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace Aquarium
- {
- class Program
- {
- static void Main(string[] args)
- {
- const string CommandAddFish = "1";
- const string CommandRemoveFish = "2";
- const string CommandSkipYear = "3";
- const string CommandExit = "4";
- bool isWork = true;
- Aquarium aquarium = new Aquarium();
- Console.CursorVisible = false;
- while (isWork)
- {
- Menu menu = new Menu(aquarium.GetFishes());
- Console.Clear();
- aquarium.ShowAllFishes();
- Console.WriteLine($"{CommandAddFish}. Добавить рыбу." +
- $"\n{CommandRemoveFish}. Убрать рыбу." +
- $"\n{CommandSkipYear}. Пропустить год." +
- $"\n{CommandExit}. Выйти");
- switch (Console.ReadLine())
- {
- case CommandAddFish:
- aquarium.AddFish();
- break;
- case CommandRemoveFish:
- menu.TryRun(aquarium);
- break;
- case CommandSkipYear:
- aquarium.SkipYear();
- break;
- case CommandExit:
- isWork = false;
- break;
- default:
- Console.WriteLine("Ошибка, такого пункта меню нет");
- break;
- }
- Console.ReadKey();
- Console.Clear();
- }
- }
- }
- class Aquarium
- {
- private List<Fish> _fishes = new List<Fish>();
- private int _maxFishCount = 10;
- public void ShowAllFishes()
- {
- if (_fishes.Count == 0)
- {
- Console.WriteLine($"Аквариум пустой.");
- }
- else
- {
- foreach (Fish fish in _fishes)
- {
- fish.ShowInfo();
- }
- }
- }
- public void AddFish()
- {
- if (_fishes.Count < _maxFishCount)
- {
- Console.Write("Введите название рыбы: ");
- string name = Console.ReadLine();
- _fishes.Add(new Fish(name));
- }
- else
- {
- Console.WriteLine($"Достигнут лимит аквариума {_maxFishCount}.");
- }
- }
- public List<Fish> GetFishes()
- {
- List<Fish> fishesCopy = new List<Fish>(_fishes);
- return fishesCopy;
- }
- public void RemoveFish(int index)
- {
- Fish fish = _fishes[index];
- _fishes.Remove(fish);
- }
- public void SkipYear()
- {
- int year = 1;
- Console.WriteLine("Прошел год.");
- foreach (Fish fish in _fishes)
- {
- fish.Grow(year);
- fish.TryDie();
- }
- }
- }
- class Fish
- {
- private bool _isAlive;
- public Fish(string name, int age = 1, bool isAlive = true)
- {
- Name = name;
- Age = age;
- _isAlive = isAlive;
- }
- public string Name { get; private set; }
- public int Age { get; private set; }
- public void ShowInfo()
- {
- if (_isAlive)
- {
- Console.WriteLine($"Название рыбы: {Name}, возраст: {Age}, здорова");
- }
- else
- {
- Console.WriteLine($"Название рыбы: {Name}, возраст: {Age}, мертва");
- }
- }
- public void Grow(int year)
- {
- if (_isAlive)
- {
- Age += year;
- }
- }
- public bool TryDie()
- {
- Random random = new Random();
- int chance = random.Next(0, 101);
- if (chance < Age)
- {
- _isAlive = false;
- return true;
- }
- else
- {
- return false;
- }
- }
- }
- class Menu
- {
- private List<Fish> _items;
- private int _selectedItemIndex;
- public Menu(List<Fish> items)
- {
- _items = items;
- _selectedItemIndex = 0;
- }
- private void Display()
- {
- Console.Clear();
- if(_items.Count > 0)
- {
- Console.WriteLine("Управление ▲, ▼, Enter, Esc.");
- for (int i = 0; i < _items.Count; i++)
- {
- Fish currentItem = _items[i];
- if (i == _selectedItemIndex)
- {
- Console.ForegroundColor = ConsoleColor.Black;
- Console.BackgroundColor = ConsoleColor.Gray;
- currentItem.ShowInfo();
- }
- else
- {
- currentItem.ShowInfo();
- }
- Console.ResetColor();
- }
- }
- else
- {
- Console.WriteLine("В аквариуме кончились рыбы.");
- }
- }
- private void MoveUp()
- {
- _selectedItemIndex--;
- if (_selectedItemIndex < 0)
- {
- _selectedItemIndex = _items.Count - 1;
- }
- }
- private void MoveDown()
- {
- _selectedItemIndex++;
- if (_selectedItemIndex >= _items.Count)
- {
- _selectedItemIndex = 0;
- }
- }
- private void СhooseFish(Aquarium aquarium, ref bool isWork)
- {
- aquarium.RemoveFish(_selectedItemIndex);
- _items.RemoveAt(_selectedItemIndex);
- if (_selectedItemIndex == _items.Count)
- {
- MoveUp();
- }
- }
- public void TryRun(Aquarium aquarium)
- {
- if(_items.Count > 0)
- {
- Run(aquarium);
- }
- else
- {
- Console.WriteLine("Аквариум пустой.");
- }
- }
- public void Run(Aquarium aquarium)
- {
- const ConsoleKey KeyMoveUp = ConsoleKey.UpArrow;
- const ConsoleKey KeyMoveDown = ConsoleKey.DownArrow;
- const ConsoleKey KeyPressingEnter = ConsoleKey.Enter;
- const ConsoleKey KeyPressingEscape = ConsoleKey.Escape;
- bool isWork = true;
- while (isWork)
- {
- if(_items.Count ==0)
- {
- isWork = false;
- Display();
- }
- else
- {
- Console.Clear();
- Display();
- ConsoleKeyInfo keyInfo;
- keyInfo = Console.ReadKey(true);
- switch (keyInfo.Key)
- {
- case KeyMoveUp:
- MoveUp();
- break;
- case KeyMoveDown:
- MoveDown();
- break;
- case KeyPressingEnter:
- СhooseFish(aquarium, ref isWork);
- break;
- case KeyPressingEscape:
- isWork = false;
- break;
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment