Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- namespace Ijunior
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- Aquarist aquarist = new Aquarist();
- aquarist.Work();
- }
- }
- class Aquarist
- {
- private Aquarium _aquarium;
- public Aquarist()
- {
- _aquarium = new Aquarium(CreateDefaultFish(), 10);
- }
- public void Work()
- {
- const string CommandAddFish = "1";
- const string CommandRemoveFish = "2";
- const string CommandExit = "3";
- bool isWork = true;
- while (isWork)
- {
- _aquarium.ShowInfo();
- Console.Write($"\n{CommandAddFish} - добавить рыбу" +
- $"\n{CommandRemoveFish} - убрать рыбу" +
- $"\n{CommandExit} - выйти" +
- $"\nВведите номер или нажмите любую клавишу для обновления: ");
- switch (Console.ReadLine())
- {
- case CommandAddFish:
- AddFish();
- break;
- case CommandRemoveFish:
- RemoveFish();
- break;
- case CommandExit:
- isWork = false;
- break;
- default:
- _aquarium.UpdateFish();
- break;
- }
- Console.ReadLine();
- Console.Clear();
- }
- }
- private List<Fish> CreateDefaultFish()
- {
- List<Fish> fish = new List<Fish>();
- int defaultFishCount = 5;
- while (fish.Count < defaultFishCount)
- {
- fish.Add(CreateFish());
- }
- return fish;
- }
- private void AddFish()
- {
- if (_aquarium.FishCount < _aquarium.Limit)
- {
- Fish fish = CreateFish();
- _aquarium.AddFish(fish);
- }
- else
- {
- Console.WriteLine("Количество рыб не может превышать лимит: " + _aquarium.Limit);
- }
- }
- private Fish CreateFish()
- {
- List<string> fishTypes = new List<string>()
- { "тунец", "минтай", "треска", "горбуша", "скумбрия", "лосось", "угорь", "мойва" };
- string name = fishTypes[Utils.GetRandomNumber(0, fishTypes.Count - 1)];
- int currentAge = Utils.GetRandomNumber(0, 10);
- int maxAge = Utils.GetRandomNumber(10, 15);
- return new Fish(name, currentAge, maxAge);
- }
- private void RemoveFish()
- {
- Console.Write("Введите номер рыбы для удаления: ");
- if (int.TryParse(Console.ReadLine(), out int index))
- {
- if (index > 0 && index <= _aquarium.FishCount)
- _aquarium.RemoveFish(index - 1);
- else
- Console.WriteLine("Такого номера нет");
- }
- else
- {
- Console.WriteLine("Некорректный ввод");
- }
- }
- }
- class Aquarium
- {
- private List<Fish> _fish;
- public Aquarium(List<Fish> fish, int limit)
- {
- _fish = fish;
- Limit = limit;
- }
- public int Limit { get; }
- public int FishCount => _fish.Count;
- public void AddFish(Fish fish)
- {
- _fish.Add(fish);
- }
- public void RemoveFish(int index)
- {
- _fish.RemoveAt(index);
- }
- public void ShowInfo()
- {
- Console.WriteLine($"Рыб в аквариуме {_fish.Count} из {Limit}: \n");
- for (int i = 0; i < _fish.Count; i++)
- {
- Console.Write(i + 1 + " ");
- _fish[i].ShowInfo();
- }
- }
- public void UpdateFish()
- {
- for (int i = _fish.Count - 1; i >= 0; i--)
- {
- if (_fish[i].IsDead)
- _fish.RemoveAt(i);
- else
- _fish[i].GrowOld();
- }
- }
- }
- class Fish
- {
- private string _name;
- private int _currentAge;
- private int _maxAge;
- public Fish(string name, int currentAge, int maxAge)
- {
- _name = name;
- _currentAge = currentAge;
- _maxAge = maxAge;
- }
- public void ShowInfo()
- {
- Console.WriteLine($"{_name} возраст {_currentAge} из {_maxAge}");
- }
- public void GrowOld()
- {
- _currentAge++;
- }
- public bool IsDead => _currentAge >= _maxAge;
- }
- class Utils
- {
- private static Random s_random = new Random();
- public static int GetRandomNumber(int minValue, int maxValue)
- {
- return s_random.Next(minValue, maxValue);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment