Advertisement
SnowPhoenix347

5.5

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