Advertisement
Guest User

Untitled

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