Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 9.68 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace _5._5._5
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             string itemMenu;
  14.             char charFish;
  15.             int startHealth, loseHealthPerCycle, numberRemoveFish, positionX, positionY;
  16.  
  17.             Fish[] fishes = { new Fish('@', 1, 2), new Fish('*', 2, 1), new Fish('&', 5, 3), new Fish('$', 0, 1) };
  18.             Aquarium aquarium = new Aquarium(fishes);
  19.  
  20.             while (true)
  21.             {
  22.                 Console.Clear();
  23.                 aquarium.ShowListFishes();
  24.  
  25.                 Console.WriteLine("Добро пожаловать в пункт управления и наблюдения за аквариумом!\n" +
  26.                     "В аквариуме может быть максимум 5 рыб. Каждая рыба живет максимум 10 ед.\n" +
  27.                     "Чтобы повлиять на жизнь в аквариуме, выберете нужный пункт меню:\n" +
  28.                     "1) Добавить рыбу в аквариум;\n" +
  29.                     "2) Удалить рыбу из аквариума по порядковому номеру;\n" +
  30.                     "3) Прожить цикл пассивно.\n");
  31.  
  32.                 Console.WriteLine("Введите пункт меню:\n");
  33.                 itemMenu = Console.ReadLine();
  34.  
  35.                 switch (itemMenu)
  36.                 {
  37.                     case "1":
  38.                         Console.Clear();
  39.                         aquarium.ShowListFishes();
  40.  
  41.                         Console.WriteLine("Введите символ рыбы:\n");
  42.                         charFish = Convert.ToChar(Console.ReadLine());
  43.                         Console.Clear();
  44.  
  45.                         Console.WriteLine("Введите начальное количество жизней:\n");
  46.                         startHealth = Convert.ToInt32(Console.ReadLine());
  47.                         Console.Clear();
  48.  
  49.                         Console.WriteLine("Введите кличество жизней которое рыба теряет за цикл:\n");
  50.                         loseHealthPerCycle = Convert.ToInt32(Console.ReadLine());
  51.                         Console.Clear();
  52.  
  53.                         AddAgeFish(fishes);
  54.                         aquarium.CheckFishHealth();
  55.                         fishes = aquarium.AddFish(new Fish(charFish, startHealth, loseHealthPerCycle));
  56.                         break;
  57.                     case "2":
  58.                         Console.Clear();
  59.  
  60.                         Console.WriteLine("Чтобы удалить рыбу введите ее порядковый номер:\n");
  61.                         numberRemoveFish = Convert.ToInt32(Console.ReadLine()) - 1;
  62.  
  63.                         fishes = aquarium.RemoveFish(numberRemoveFish);
  64.  
  65.                         AddAgeFish(fishes);
  66.                         aquarium.CheckFishHealth();
  67.                         break;
  68.                     case "3":
  69.                         Console.Clear();
  70.  
  71.                         AddAgeFish(fishes);
  72.                         aquarium.CheckFishHealth();
  73.                         break;
  74.                     case "4":
  75.                         Console.Clear();
  76.  
  77.                         Console.WriteLine("Имитация движения рыб. Рыба смещается на одину позицую, после нажатия одной клавиши.\n" +
  78.                             "За один цикл рыба делает 7 шагов");
  79.  
  80.                         Random randomPositionX = new Random();
  81.                         Random randomPositionY = new Random();
  82.  
  83.                         Console.CursorVisible = false;
  84.  
  85.                         if (fishes.Length > 0)
  86.                         {
  87.                             for (int i = 0; i < 8; i++)
  88.                             {
  89.                                 for (int j = 0; j < fishes.Length; j++)
  90.                                 {
  91.                                     positionX = randomPositionX.Next(i, i + 2);
  92.                                     positionY = randomPositionY.Next(j+2, j+5);
  93.  
  94.                                     fishes[j].FishSwims(positionX, positionY);
  95.                                 }
  96.                                 Console.ReadKey();
  97.                                 Console.Clear();
  98.                             }
  99.                         }
  100.                         else
  101.                         {
  102.                             Console.WriteLine("Некому плыть!");
  103.                         }
  104.  
  105.                         AddAgeFish(fishes);
  106.  
  107.                         Console.CursorVisible = true;
  108.                         break;
  109.                     default:
  110.                         Console.Clear();
  111.                         Console.WriteLine("Такого пункта нет в меню!");
  112.                         break;
  113.                 }
  114.  
  115.             }
  116.  
  117.         }
  118.  
  119.         static void AddAgeFish(Fish[] fishes)
  120.         {
  121.             if (fishes.Length > 0)
  122.             {
  123.                 for (int i = 0; i < fishes.Length; i++)
  124.                 {
  125.                     fishes[i].AgingFish();
  126.                 }
  127.             }
  128.         }
  129.     }
  130.  
  131.     class Fish
  132.     {
  133.         public char FishChar;
  134.         public int Health;
  135.         public int LoseHealthPerCycle;
  136.  
  137.         public Fish(char fishChar, int health, int loseHealthPerCycle)
  138.         {
  139.             FishChar = fishChar;
  140.             Health = health;
  141.             LoseHealthPerCycle = loseHealthPerCycle;
  142.         }
  143.  
  144.         public void AgingFish()
  145.         {
  146.             Health += LoseHealthPerCycle;
  147.         }
  148.  
  149.         public void FishSwims(int positionXFish, int positionYFish)
  150.         {
  151.             Console.SetCursorPosition(positionXFish, positionYFish);
  152.             Console.Write(FishChar);
  153.         }
  154.     }
  155.  
  156.     class Aquarium
  157.     {
  158.         public Fish[] Fishes;
  159.  
  160.         public Aquarium(Fish[] fishes)
  161.         {
  162.             Fishes = fishes;
  163.         }
  164.         public Aquarium()
  165.         {
  166.             Fishes = new Fish[0];
  167.         }
  168.  
  169.         public bool CheckLengthAquarium()
  170.         {
  171.             if (Fishes.Length < 5)
  172.             {
  173.                 return true;
  174.             }
  175.             else
  176.             {
  177.                 return false;
  178.             }
  179.         }
  180.  
  181.         /* public void AddFish(Fish newFish)
  182.          {
  183.              Fish[] tempFishes = new Fish[Fishes.Length + 1];
  184.  
  185.              for (int i = 0; i < Fishes.Length; i++)
  186.              {
  187.                  if (Fishes[i].FishChar != newFish.FishChar)
  188.                  {
  189.                      tempFishes[i] = Fishes[i];
  190.                  }
  191.                  else
  192.                  {
  193.                      Console.WriteLine("\nРыбка с таким сымволом уже есть!\n");
  194.                  }
  195.              }
  196.  
  197.              tempFishes[Fishes.Length] = newFish;
  198.  
  199.              Fishes = tempFishes;
  200.          }*/
  201.         public Fish[] AddFish(Fish newFish)
  202.         {
  203.             Fish[] tempFishes = new Fish[Fishes.Length + 1];
  204.  
  205.             for (int i = 0; i < Fishes.Length; i++)
  206.             {
  207.                 if (Fishes[i].FishChar != newFish.FishChar)
  208.                 {
  209.                     tempFishes[i] = Fishes[i];
  210.                 }
  211.                 else
  212.                 {
  213.                     Console.WriteLine("\nРыбка с таким сымволом уже есть!\n");
  214.                     return Fishes;
  215.                 }
  216.             }
  217.  
  218.             tempFishes[Fishes.Length] = newFish;
  219.  
  220.             Fishes = tempFishes;
  221.  
  222.             return Fishes;
  223.         }
  224.  
  225.         public Fish[] RemoveFish(int indexFish)
  226.         {
  227.             Fish[] tempFishes = new Fish[Fishes.Length - 1];
  228.             int indexMove = 0;
  229.  
  230.             for (int i = 0; i < Fishes.Length - 1; i++)
  231.             {
  232.                 if ((i + 1) == indexFish)
  233.                 {
  234.                     indexMove = 1;
  235.                 }
  236.                 tempFishes[i] = Fishes[i + indexMove];
  237.  
  238.             }
  239.             Fishes = tempFishes;
  240.  
  241.             return Fishes;
  242.         }
  243.  
  244.         public Fish[] CheckFishHealth()
  245.         {
  246.             int CountDieFish = 0;
  247.  
  248.             for (int i = 0; i < Fishes.Length; i++)
  249.             {
  250.                 if (Fishes[i].Health > 10)
  251.                 {
  252.                     CountDieFish += 1;
  253.                 }
  254.             }
  255.             if (CountDieFish > 0)
  256.             {
  257.                 Fish[] tempFishes = new Fish[Fishes.Length - CountDieFish];
  258.                 int indexNewArray = 0;
  259.  
  260.                 for (int i = 0; i < Fishes.Length; i++)
  261.                 {
  262.  
  263.                     if (Fishes[i].Health <= 10)
  264.                     {
  265.                         tempFishes[indexNewArray] = Fishes[i];
  266.                         indexNewArray += 1;
  267.                     }
  268.                 }
  269.                 Fishes = tempFishes;
  270.                 return Fishes;
  271.             }
  272.             else
  273.             {
  274.                 return Fishes;
  275.             }
  276.         }
  277.  
  278.         public void ShowListFishes()
  279.         {
  280.             if (Fishes.Length < 1)
  281.             {
  282.                 Console.WriteLine("\nАквариум пуст!\n");
  283.             }
  284.             else
  285.             {
  286.                 for (int i = 0; i < Fishes.Length; i++)
  287.                 {
  288.                     Console.WriteLine($"{i + 1}) Рыба - {Fishes[i].FishChar}. Возраст рыбы: {Fishes[i].Health}. За один цикл рыба стареет на {Fishes[i].LoseHealthPerCycle} ед.");
  289.                 }
  290.             }
  291.         }
  292.     }
  293.  
  294. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement