Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace _5._5._5
- {
- class Program
- {
- static void Main(string[] args)
- {
- string itemMenu;
- char charFish;
- int startHealth, loseHealthPerCycle, numberRemoveFish;
- Fish[] fishes = { new Fish('@', 1, 2), new Fish('*', 2, 1), new Fish('&', 5, 3), new Fish('$', 0, 1) };
- Aquarium aquarium = new Aquarium(fishes);
- while (true)
- {
- aquarium.ShowListFishes();
- Console.WriteLine("Добро пожаловать в пункт управления и наблюдения за аквариумом!\n" +
- "В аквариуме может быть максимум 5 рыб. Каждая рыба живет максимум 10 ед.\n" +
- "Чтобы повлиять на жизнь в аквариуме, выберете нужный пункт меню:\n" +
- "1) Добавить рыбу в аквариум;\n" +
- "2) Удалить рыбу из аквариума по порядковому номеру;\n" +
- "3) Прожить цикл пассивно.\n");
- Console.WriteLine("Введите пункт меню:\n");
- itemMenu = Console.ReadLine();
- switch (itemMenu)
- {
- case "1":
- Console.Clear();
- aquarium.ShowListFishes();
- Console.WriteLine("Введите символ рыбы:\n");
- charFish = Convert.ToChar(Console.ReadLine());
- Console.Clear();
- Console.WriteLine("Введите начальное количество жизней:\n");
- startHealth = Convert.ToInt32(Console.ReadLine());
- Console.Clear();
- Console.WriteLine("Введите кличество жизней которое рыба теряет за цикл:\n");
- loseHealthPerCycle = Convert.ToInt32(Console.ReadLine());
- Console.Clear();
- AddAgeFish(fishes);
- fishes = aquarium.CheckFishHealth();
- fishes = aquarium.AddFish(new Fish(charFish, startHealth, loseHealthPerCycle));
- break;
- case "2":
- Console.Clear();
- Console.WriteLine("Чтобы удалить рыбу введите ее порядковый номер:\n");
- numberRemoveFish = Convert.ToInt32(Console.ReadLine()) - 1;
- fishes = aquarium.RemoveFish(numberRemoveFish);
- AddAgeFish(fishes);
- fishes = aquarium.CheckFishHealth();
- break;
- case "3":
- Console.Clear();
- AddAgeFish(fishes);
- fishes = aquarium.CheckFishHealth();
- break;
- case "4":
- Console.Clear();
- SwimingFish(fishes);
- AddAgeFish(fishes);
- fishes = aquarium.CheckFishHealth();
- Console.CursorVisible = true;
- break;
- default:
- Console.Clear();
- Console.WriteLine("Такого пункта нет в меню!");
- break;
- }
- }
- }
- static void AddAgeFish(Fish[] fishes)
- {
- if (fishes.Length > 0)
- {
- for (int i = 0; i < fishes.Length; i++)
- {
- fishes[i].AgingFish();
- }
- }
- }
- static void SwimingFish(Fish[] fishes)
- {
- int positionX, positionY;
- Console.WriteLine("Имитация движения рыб. Рыба смещается на одину позицую, после нажатия одной клавиши.\n" +
- "За один цикл рыба делает 7 шагов");
- Random randomPositionX = new Random();
- Random randomPositionY = new Random();
- Console.CursorVisible = false;
- if (fishes.Length > 0)
- {
- for (int i = 0; i < 8; i++)
- {
- for (int j = 0; j < fishes.Length; j++)
- {
- positionX = randomPositionX.Next(i, i + 2);
- positionY = randomPositionY.Next(j + 2, j + 5);
- fishes[j].FishSwims(positionX, positionY);
- }
- Console.ReadKey();
- Console.Clear();
- }
- }
- else
- {
- Console.WriteLine("Некому плыть!");
- }
- }
- }
- class Fish
- {
- public char FishChar;
- public int Health;
- public int LoseHealthPerCycle;
- public Fish(char fishChar, int health, int loseHealthPerCycle)
- {
- FishChar = fishChar;
- Health = health;
- LoseHealthPerCycle = loseHealthPerCycle;
- }
- public void AgingFish()
- {
- Health += LoseHealthPerCycle;
- }
- public void FishSwims(int positionXFish, int positionYFish)
- {
- Console.SetCursorPosition(positionXFish, positionYFish);
- Console.Write(FishChar);
- }
- }
- class Aquarium
- {
- public Fish[] Fishes;
- public Aquarium(Fish[] fishes)
- {
- Fishes = fishes;
- }
- public Aquarium()
- {
- Fishes = new Fish[0];
- }
- public bool CheckLengthAquarium()
- {
- if (Fishes.Length < 5)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- public Fish[] AddFish(Fish newFish)
- {
- Fish[] tempFishes = new Fish[Fishes.Length + 1];
- for (int i = 0; i < Fishes.Length; i++)
- {
- if (Fishes[i].FishChar != newFish.FishChar)
- {
- tempFishes[i] = Fishes[i];
- }
- else
- {
- Console.WriteLine("\nРыбка с таким сымволом уже есть!\n");
- return Fishes;
- }
- }
- tempFishes[Fishes.Length] = newFish;
- Fishes = tempFishes;
- return Fishes;
- }
- public Fish[] RemoveFish(int indexFish)
- {
- Fish[] tempFishes = new Fish[Fishes.Length - 1];
- int indexMove = 0;
- for (int i = 0; i < Fishes.Length - 1; i++)
- {
- if ((i + 1) == indexFish)
- {
- indexMove = 1;
- }
- tempFishes[i] = Fishes[i + indexMove];
- }
- Fishes = tempFishes;
- return Fishes;
- }
- public Fish[] CheckFishHealth()
- {
- int CountDieFish = 0;
- for (int i = 0; i < Fishes.Length; i++)
- {
- if (Fishes[i].Health > 10)
- {
- CountDieFish += 1;
- }
- }
- if (CountDieFish > 0)
- {
- Fish[] tempFishes = new Fish[Fishes.Length - CountDieFish];
- int indexNewArray = 0;
- for (int i = 0; i < Fishes.Length; i++)
- {
- if (Fishes[i].Health <= 10)
- {
- tempFishes[indexNewArray] = Fishes[i];
- indexNewArray += 1;
- }
- }
- Fishes = tempFishes;
- return Fishes;
- }
- else
- {
- return Fishes;
- }
- }
- public void ShowListFishes()
- {
- if (Fishes.Length < 1)
- {
- Console.WriteLine("\nАквариум пуст!\n");
- }
- else
- {
- for (int i = 0; i < Fishes.Length; i++)
- {
- Console.WriteLine($"{i + 1}) Рыба - {Fishes[i].FishChar}. Возраст рыбы: {Fishes[i].Health}. За один цикл рыба стареет на {Fishes[i].LoseHealthPerCycle} ед.");
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement