Advertisement
SnowPhoenix347

5.5

Nov 14th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.51 KB | None | 0 0
  1. using System;
  2.  
  3. namespace FifthProject
  4. {
  5.     class Program
  6.     {
  7.         static void Main(string[] args)
  8.         {
  9.             Aquarium aquarium = new Aquarium();
  10.             UIRender render = new UIRender();
  11.             Renderer renderer = new Renderer();
  12.             FishPosition fishPosition = new FishPosition();
  13.  
  14.             while (true)
  15.             {
  16.                 renderer.Render(aquarium.Height, aquarium.Width, aquarium.fishes);
  17.                 fishPosition.FishMovement(aquarium.fishes);
  18.  
  19.                 Console.SetCursorPosition(0, aquarium.Height);
  20.                 render.ShowMenu();
  21.  
  22.                 render.RenderFishList(aquarium.fishes);
  23.  
  24.                 Console.WriteLine($"{aquarium.fishes.Length}/{aquarium.Size}");
  25.  
  26.                 int menu = Convert.ToInt32(Console.ReadLine());
  27.                 switch (menu)
  28.                 {
  29.                     case 1:
  30.                         if (aquarium.Size == aquarium.fishes.Length)
  31.                         {
  32.                             Console.WriteLine("Аквариум полон");
  33.                         }
  34.                         else
  35.                         {
  36.                             aquarium.AddNewFish(ref aquarium.fishes);
  37.                         }
  38.                         break;
  39.                     case 2:
  40.                         if (aquarium.fishes.Length == 0)
  41.                         {
  42.                             Console.WriteLine("Аквариум пуст");
  43.                         }
  44.                         else
  45.                         {
  46.                             Console.WriteLine("Какую рыбку удалить?");
  47.                             int id = Convert.ToInt32(Console.ReadLine());
  48.                             aquarium.DeleteFish(ref aquarium.fishes, id);
  49.                         }
  50.                         break;
  51.                 }
  52.                 aquarium.FishLive(ref aquarium.fishes);
  53.                 Console.Clear();
  54.             }
  55.         }
  56.     }
  57.  
  58.     class UIRender
  59.     {
  60.         public void RenderFishList(Fish[] fishes)
  61.         {
  62.             for (int i = 0; i < fishes.Length; i++)
  63.             {
  64.                 Console.WriteLine($"Рыбка номер {i} - {fishes[i].Name}. {fishes[i].Age}/{fishes[i].MaxAge}. {fishes[i].Appearance}");
  65.             }
  66.         }
  67.         public void ShowMenu()
  68.         {
  69.             Console.WriteLine($"1. Добавить рыбку в аквариум\n" +
  70.                               $"2. Вытащить рыбку из аквариума\n" +
  71.                               $"3. Ждать");
  72.         }
  73.     }
  74.  
  75.     class Renderer
  76.     {
  77.         public void Render(int width, int height, Fish[] fishes)
  78.         {
  79.             for (int i = 0; i < width; i++)
  80.             {
  81.                 for (int j = 0; j < height; j++)
  82.                 {
  83.                     if (i == 0 || i == width - 1) Console.Write("#");
  84.                     else if (j == 0 || j == height - 1) Console.Write("#");
  85.                     else Console.Write(" ");
  86.                 }
  87.                 Console.WriteLine();
  88.             }
  89.             for (int i = 0; i < fishes.Length; i++)
  90.             {
  91.                 Console.SetCursorPosition(fishes[i].PositionX, fishes[i].PositionY);
  92.                 Console.WriteLine(fishes[i].Appearance);
  93.             }
  94.         }
  95.     }
  96.  
  97.     class FishPosition
  98.     {
  99.         Aquarium aquarium = new Aquarium();
  100.         public void FishMovement(Fish[] fishes)
  101.         {
  102.             Random random = new Random();
  103.             for (int i = fishes.Length - 1; i > -1; i--)
  104.             {
  105.                 Console.SetCursorPosition(fishes[i].PositionX, fishes[i].PositionY);
  106.                 int direction = random.Next(1, 5);
  107.  
  108.                 switch (direction)
  109.                 {
  110.                     case 1:
  111.                         if (Console.CursorTop - 1 != 1)
  112.                         {
  113.                             fishes[i].PositionY--;
  114.                         }
  115.  
  116.                         break;
  117.                     case 2:
  118.                         if (Console.CursorTop + 1 != aquarium.Height - 1)
  119.                         {
  120.                             fishes[i].PositionY++;
  121.                         }
  122.  
  123.                         break;
  124.                     case 3:
  125.                         if (Console.CursorLeft - 1 != 1)
  126.                         {
  127.                             fishes[i].PositionX--;
  128.                         }
  129.  
  130.                         break;
  131.                     case 4:
  132.                         if (Console.CursorLeft + 1 != aquarium.Width - 1)
  133.                         {
  134.                             fishes[i].PositionX++;
  135.                         }
  136.  
  137.                         break;
  138.                 }
  139.             }
  140.         }
  141.     }
  142.     class Fish
  143.     {
  144.         public int MaxAge { get; set; }
  145.         public int Age { get; set; }
  146.         public string Name { get; set; }
  147.         public string Appearance { get; set; }
  148.         public int PositionX { get; set; }
  149.         public int PositionY { get; set; }
  150.  
  151.         public Fish(int maxAge, int age, string name, string appearance, int positionX, int positionY)
  152.         {
  153.             MaxAge = maxAge;
  154.             Age = age;
  155.             Name = name;
  156.             Appearance = appearance;
  157.             PositionX = positionX;
  158.             PositionY = positionY;
  159.         }
  160.     }
  161.  
  162.     class Aquarium
  163.     {
  164.         public Fish[] fishes = new Fish[0];
  165.         public int Size { get; set; } = 5;
  166.         public int Height { get; set; } = 20;
  167.         public int Width { get; set; } = 15;
  168.  
  169.         public void AddNewFish(ref Fish[] fishes)
  170.         {
  171.             Random random = new Random();
  172.  
  173.             Console.WriteLine("Сколько должна прожить ваша рыбка?");
  174.             int maxAge = Convert.ToInt32(Console.ReadLine());
  175.  
  176.             Console.WriteLine($"Каков её возраст на данный момент? Максимум {maxAge - 1}");
  177.             int age = Convert.ToInt32(Console.ReadLine()) - 1;
  178.  
  179.             Console.WriteLine("Как зовут вашу рыбку?");
  180.             string name = Console.ReadLine();
  181.  
  182.             Console.WriteLine("Нарисуйте ваши рыбку");
  183.             string appearance = Console.ReadLine();
  184.  
  185.             Fish[] tempFishes = new Fish[fishes.Length + 1];
  186.  
  187.             for (int i = 0; i < tempFishes.Length - 1; i++)
  188.             {
  189.                 tempFishes[i] = fishes[i];
  190.             }
  191.             tempFishes[tempFishes.Length - 1] = new Fish(maxAge, age, name, appearance, random.Next(1, Width - 1), random.Next(1, Height - 1));
  192.  
  193.             fishes = tempFishes;
  194.         }
  195.  
  196.         public void DeleteFish(ref Fish[] fishes, int id)
  197.         {
  198.             fishes[id] = null;
  199.             Fish[] tempFishes = new Fish[fishes.Length - 1];
  200.             for (int i = 0; i < fishes.Length - 1; i++)
  201.             {
  202.                 if (fishes[i] != null)
  203.                 {
  204.                     tempFishes[i] = fishes[i];
  205.                 }
  206.                 else
  207.                 {
  208.                     tempFishes[i] = fishes[i + 1];
  209.                 }
  210.             }
  211.  
  212.             fishes = tempFishes;
  213.         }
  214.         public void FishLive(ref Fish[] fishes)
  215.         {
  216.             for (int i = 0; i < fishes.Length; i++)
  217.             {
  218.                 if (fishes[i].Age == fishes[i].MaxAge)
  219.                 {
  220.                     DeleteFish(ref fishes, i);
  221.                 }
  222.                 else
  223.                 {
  224.                     fishes[i].Age++;
  225.                 }
  226.             }
  227.         }
  228.     }
  229. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement