Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace FifthProject
- {
- class Program
- {
- static void Main(string[] args)
- {
- Aquarium aquarium = new Aquarium();
- Fish[] fishes = new Fish[0];
- UIRender render = new UIRender();
- Renderer renderer = new Renderer();
- FishPosition fishPosition = new FishPosition();
- while (true)
- {
- renderer.Render(aquarium.Height, aquarium.Width, fishes);
- fishPosition.FishMovement(fishes);
- Console.SetCursorPosition(0, aquarium.Height);
- render.ShowMenu();
- render.RenderFishList(fishes);
- Console.WriteLine($"{fishes.Length}/{aquarium.Size}");
- int menu = Convert.ToInt32(Console.ReadLine());
- switch (menu)
- {
- case 1:
- if (aquarium.Size == fishes.Length)
- {
- Console.WriteLine("Аквариум полон");
- }
- else
- {
- aquarium.AddNewFish(ref fishes);
- }
- break;
- case 2:
- if (fishes.Length == 0)
- {
- Console.WriteLine("Аквариум пуст");
- }
- else
- {
- Console.WriteLine("Какую рыбку удалить?");
- int id = Convert.ToInt32(Console.ReadLine());
- aquarium.DeleteFish(ref fishes, id);
- }
- break;
- }
- aquarium.FishLive(ref fishes);
- Console.Clear();
- }
- }
- }
- class UIRender
- {
- public void RenderFishList(Fish[] fishes)
- {
- for (int i = 0; i < fishes.Length; i++)
- {
- Console.WriteLine($"Рыбка номер {i} - {fishes[i].Name}. {fishes[i].Age}/{fishes[i].MaxAge}. {fishes[i].Appearance}");
- }
- }
- public void ShowMenu()
- {
- Console.WriteLine($"1. Добавить рыбку в аквариум\n" +
- $"2. Вытащить рыбку из аквариума\n" +
- $"3. Ждать");
- }
- }
- class Renderer
- {
- public void Render(int width, int height, Fish[] fishes)
- {
- for (int i = 0; i < width; i++)
- {
- for (int j = 0; j < height; j++)
- {
- if (i == 0 || i == width - 1) Console.Write("#");
- else if (j == 0 || j == height - 1) Console.Write("#");
- else Console.Write(" ");
- }
- Console.WriteLine();
- }
- for (int i = 0; i < fishes.Length; i++)
- {
- Console.SetCursorPosition(fishes[i].PositionX, fishes[i].PositionY);
- Console.WriteLine(fishes[i].Appearance);
- }
- }
- }
- class FishPosition
- {
- Aquarium aquarium = new Aquarium();
- public void FishMovement(Fish[] fishes)
- {
- Random random = new Random();
- for (int i = fishes.Length - 1; i > -1; i--)
- {
- Console.SetCursorPosition(fishes[i].PositionX, fishes[i].PositionY);
- int direction = random.Next(1, 5);
- switch (direction)
- {
- case 1:
- if (Console.CursorTop - 1 != 1)
- {
- fishes[i].PositionY--;
- }
- break;
- case 2:
- if (Console.CursorTop + 1 != aquarium.Height - 1)
- {
- fishes[i].PositionY++;
- }
- break;
- case 3:
- if (Console.CursorLeft - 1 != 1)
- {
- fishes[i].PositionX--;
- }
- break;
- case 4:
- if (Console.CursorLeft + 1 != aquarium.Width - 1)
- {
- fishes[i].PositionX++;
- }
- break;
- }
- }
- }
- }
- class Fish
- {
- public int MaxAge { get; set; }
- public int Age { get; set; }
- public string Name { get; set; }
- public string Appearance { get; set; }
- public int PositionX { get; set; }
- public int PositionY { get; set; }
- public Fish(int maxAge, int age, string name, string appearance, int positionX, int positionY)
- {
- MaxAge = maxAge;
- Age = age;
- Name = name;
- Appearance = appearance;
- PositionX = positionX;
- PositionY = positionY;
- }
- }
- class Aquarium
- {
- public int Size { get; set; } = 5;
- public int Height { get; set; } = 20;
- public int Width { get; set; } = 15;
- public void AddNewFish(ref Fish[] fishes)
- {
- Random random = new Random();
- Console.WriteLine("Сколько должна прожить ваша рыбка?");
- int maxAge = Convert.ToInt32(Console.ReadLine());
- Console.WriteLine($"Каков её возраст на данный момент? Максимум {maxAge - 1}");
- int age = Convert.ToInt32(Console.ReadLine()) - 1;
- Console.WriteLine("Как зовут вашу рыбку?");
- string name = Console.ReadLine();
- Console.WriteLine("Нарисуйте ваши рыбку");
- string appearance = Console.ReadLine();
- Fish[] tempFishes = new Fish[fishes.Length + 1];
- for (int i = 0; i < tempFishes.Length - 1; i++)
- {
- tempFishes[i] = fishes[i];
- }
- tempFishes[tempFishes.Length - 1] = new Fish(maxAge, age, name, appearance, random.Next(1, Width - 1), random.Next(1, Height - 1));
- fishes = tempFishes;
- }
- public void DeleteFish(ref Fish[] fishes, int id)
- {
- fishes[id] = null;
- Fish[] tempFishes = new Fish[fishes.Length - 1];
- for (int i = 0; i < fishes.Length - 1; i++)
- {
- if (fishes[i] != null)
- {
- tempFishes[i] = fishes[i];
- }
- else
- {
- tempFishes[i] = fishes[i + 1];
- }
- }
- fishes = tempFishes;
- }
- public void FishLive(ref Fish[] fishes)
- {
- for (int i = 0; i < fishes.Length; i++)
- {
- if (fishes[i].Age == fishes[i].MaxAge)
- {
- DeleteFish(ref fishes, i);
- }
- else
- {
- fishes[i].Age++;
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement