Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- namespace CSLight
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- Aquarium aquarium = new Aquarium();
- aquarium.LiveLifeCycle();
- }
- }
- class Aquarium
- {
- private int _capacity;
- private List<Fish> _fishes;
- public Aquarium()
- {
- _capacity = 10;
- InitFishes();
- }
- public void LiveLifeCycle()
- {
- const string CommandAddFish = "1";
- const string CommandRemoveFish = "2";
- const string CommandExit = "exit";
- bool isRunning = true;
- while (isRunning)
- {
- RemoveDeadFishes();
- ShowFishesInfo();
- CompleteLifeCycleIteration();
- string userInput = Console.ReadLine();
- switch (userInput)
- {
- case CommandAddFish:
- TryAddFish();
- break;
- case CommandRemoveFish:
- RemoveRandomFish();
- break;
- case CommandExit:
- isRunning = false;
- break;
- }
- }
- }
- private void CompleteLifeCycleIteration()
- {
- foreach (Fish fish in _fishes)
- {
- fish.IncreaseAge();
- }
- }
- private void RemoveRandomFish()
- {
- int minValue = 0;
- int id = UserUtils.GenerateRandomNumber(minValue, _fishes.Count);
- _fishes.RemoveAt(id);
- }
- private void RemoveDeadFishes()
- {
- for (int i = _fishes.Count - 1; i >= 0; i--)
- {
- if (_fishes[i].HasDied)
- {
- _fishes.Remove(_fishes[i]);
- }
- }
- }
- private void ShowFishesInfo()
- {
- foreach (Fish fish in _fishes)
- {
- Console.WriteLine($"{fish.Name} - возраст {fish.Age}/{fish.LifeTime}");
- }
- }
- private void TryAddFish()
- {
- int id = GenerateId();
- string name = "Fish " + id;
- if (_fishes.Count < _capacity)
- {
- _fishes.Add(new Fish(name, id));
- }
- }
- private int GenerateId()
- {
- List<int> ids = GetIds();
- int freeId = 0;
- bool isGenerating = true;
- while (isGenerating)
- {
- if (ids.Contains(freeId))
- {
- freeId++;
- }
- else
- {
- isGenerating = false;
- }
- }
- return freeId;
- }
- private List<int> GetIds()
- {
- List<int> ids = new List<int>();
- foreach (Fish fish in _fishes)
- {
- ids.Add(fish.Id);
- }
- return ids;
- }
- private void InitFishes()
- {
- _fishes = new List<Fish>();
- for (int i = 0; i < _capacity; i++)
- {
- TryAddFish();
- }
- }
- }
- class Fish
- {
- private int _maxAge;
- private int _minAge;
- public Fish(string name, int id)
- {
- Name = name;
- Age = 0;
- _minAge = 10;
- _maxAge = 20;
- LifeTime = UserUtils.GenerateRandomNumber(_minAge, _maxAge);
- Id = id;
- }
- public string Name { get; private set; }
- public int Age { get; private set; }
- public int LifeTime { get; private set; }
- public int Id { get; private set; }
- public bool HasDied
- {
- get
- {
- return Age > LifeTime;
- }
- }
- public void IncreaseAge()
- {
- Age++;
- }
- }
- class UserUtils
- {
- private static Random s_random = new Random();
- public static int GenerateRandomNumber(int minValue, int maxValue)
- {
- return s_random.Next(minValue, maxValue);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement