Advertisement
SnowPhoenix347

5.5

Nov 14th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.36 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(aquarium.Fishes);
  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(ref aquarium.Fishes);
  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(ref aquarium.Fishes, id);
  48.                         }
  49.                         break;
  50.                 }
  51.                 aquarium.FishLive(ref aquarium.Fishes);
  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 FishPosition
  97.     {
  98.         Aquarium aquarium = new Aquarium();
  99.        
  100.     }
  101.     class Fish
  102.     {
  103.         public int MaxAge;
  104.         public int Age;
  105.         public string Name;
  106.         public string Appearance;
  107.         public int PositionX;
  108.         public int PositionY;
  109.  
  110.         public Fish(int maxAge, int age, string name, string appearance, int positionX, int positionY)
  111.         {
  112.             MaxAge = maxAge;
  113.             Age = age;
  114.             Name = name;
  115.             Appearance = appearance;
  116.             PositionX = positionX;
  117.             PositionY = positionY;
  118.         }
  119.     }
  120.  
  121.     class Aquarium
  122.     {
  123.         public Fish[] Fishes = new Fish[0];
  124.         public int Size { get; set; } = 5;
  125.         public int Height { get; set; } = 20;
  126.         public int Width { get; set; } = 15;
  127.  
  128.         public void AddNewFish(ref Fish[] fishes)
  129.         {
  130.             Random random = new Random();
  131.  
  132.             Console.WriteLine("Сколько должна прожить ваша рыбка?");
  133.             int maxAge = Convert.ToInt32(Console.ReadLine());
  134.  
  135.             Console.WriteLine($"Каков её возраст на данный момент? Максимум {maxAge - 1}");
  136.             int age = Convert.ToInt32(Console.ReadLine()) - 1;
  137.  
  138.             Console.WriteLine("Как зовут вашу рыбку?");
  139.             string name = Console.ReadLine();
  140.  
  141.             Console.WriteLine("Нарисуйте ваши рыбку");
  142.             string appearance = Console.ReadLine();
  143.  
  144.             Fish[] tempFishes = new Fish[fishes.Length + 1];
  145.  
  146.             for (int i = 0; i < tempFishes.Length - 1; i++)
  147.             {
  148.                 tempFishes[i] = fishes[i];
  149.             }
  150.             tempFishes[tempFishes.Length - 1] = new Fish(maxAge, age, name, appearance, random.Next(1, Width - 1), random.Next(1, Height - 1));
  151.  
  152.             fishes = tempFishes;
  153.         }
  154.  
  155.         public void DeleteFish(ref Fish[] fishes, int id)
  156.         {
  157.             fishes[id] = null;
  158.             Fish[] tempFishes = new Fish[fishes.Length - 1];
  159.             for (int i = 0; i < fishes.Length - 1; i++)
  160.             {
  161.                 if (fishes[i] != null)
  162.                 {
  163.                     tempFishes[i] = fishes[i];
  164.                 }
  165.                 else
  166.                 {
  167.                     tempFishes[i] = fishes[i + 1];
  168.                 }
  169.             }
  170.  
  171.             fishes = tempFishes;
  172.         }
  173.         public void FishLive(ref Fish[] fishes)
  174.         {
  175.             for (int i = 0; i < fishes.Length; i++)
  176.             {
  177.                 if (fishes[i].Age == fishes[i].MaxAge)
  178.                 {
  179.                     DeleteFish(ref fishes, i);
  180.                 }
  181.                 else
  182.                 {
  183.                     fishes[i].Age++;
  184.                 }
  185.             }
  186.         }
  187.         public void FishMovement(Fish[] fishes)
  188.         {
  189.             Random random = new Random();
  190.             for (int i = fishes.Length - 1; i > -1; i--)
  191.             {
  192.                 Console.SetCursorPosition(fishes[i].PositionX, fishes[i].PositionY);
  193.                 int direction = random.Next(1, 5);
  194.  
  195.                 switch (direction)
  196.                 {
  197.                     case 1:
  198.                         if (Console.CursorTop - 1 != 1)
  199.                         {
  200.                             fishes[i].PositionY--;
  201.                         }
  202.  
  203.                         break;
  204.                     case 2:
  205.                         if (Console.CursorTop + 1 != Height - 1)
  206.                         {
  207.                             fishes[i].PositionY++;
  208.                         }
  209.  
  210.                         break;
  211.                     case 3:
  212.                         if (Console.CursorLeft - 1 != 1)
  213.                         {
  214.                             fishes[i].PositionX--;
  215.                         }
  216.  
  217.                         break;
  218.                     case 4:
  219.                         if (Console.CursorLeft + 1 != Width - 1)
  220.                         {
  221.                             fishes[i].PositionX++;
  222.                         }
  223.  
  224.                         break;
  225.                 }
  226.             }
  227.         }
  228.     }
  229. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement