Advertisement
Dr_Max_Experience

Task 10

May 12th, 2022 (edited)
597
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.71 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 ООП
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             Battlefield platoons = new Battlefield();
  14.             platoons.StartWar();
  15.         }
  16.     }
  17.    
  18.     class Battlefield
  19.     {
  20.         private Platoon _leftPlatoon = new Platoon();
  21.         private Platoon _rightPlatoon = new Platoon();
  22.  
  23.         public Battlefield()
  24.         {
  25.             _leftPlatoon = new Platoon();
  26.             _rightPlatoon = new Platoon();
  27.         }
  28.  
  29.         public void StartWar()
  30.         {
  31.             while (_leftPlatoon.SoldiersCount() > 0 && _rightPlatoon.SoldiersCount() > 0)
  32.             {
  33.                 ShowInfo();
  34.                 Fight();
  35.                 Console.ReadKey();
  36.             }
  37.  
  38.             ShowInfo();
  39.             ShowWinner();
  40.             Console.ReadKey();
  41.         }
  42.  
  43.         private void ShowInfo()
  44.         {
  45.             int number = 0;
  46.             Console.Clear();
  47.  
  48.             _leftPlatoon.ShowInfo(++number);
  49.             _rightPlatoon.ShowInfo(++number);
  50.         }
  51.  
  52.         private void Fight()
  53.         {
  54.             Soldier leftSoldier = _leftPlatoon.GetSoldier();
  55.             Soldier rightSoldier = _rightPlatoon.GetSoldier();
  56.  
  57.             leftSoldier.TakeDamage(rightSoldier.Damage);
  58.             rightSoldier.TakeDamage(leftSoldier.Damage);
  59.  
  60.             if(leftSoldier.Health <= 0)
  61.             {
  62.                 _leftPlatoon.Remove(leftSoldier);
  63.             }
  64.  
  65.             if (rightSoldier.Health <= 0)
  66.             {
  67.                 _rightPlatoon.Remove(rightSoldier);
  68.             }
  69.         }
  70.  
  71.         private void ShowWinner()
  72.         {
  73.             if(_leftPlatoon.SoldiersCount() <= 0 && _rightPlatoon.SoldiersCount() <= 0)
  74.                 Console.WriteLine("Ничья!");
  75.             else if(_leftPlatoon.SoldiersCount() > 0)
  76.                 Console.WriteLine("Победил первый взвод!");
  77.             else
  78.                 Console.WriteLine("Победил второй взвод!");
  79.         }
  80.     }
  81.  
  82.     class Platoon
  83.     {
  84.         private List<Soldier> _soldiers = new List<Soldier>();
  85.  
  86.         public Platoon()
  87.         {
  88.             int countSolders = 3;
  89.  
  90.             for(int i = 0; i < countSolders; i++)
  91.             {
  92.                 _soldiers.Add(new Soldier());
  93.             }
  94.         }
  95.  
  96.         public void ShowInfo(int index)
  97.         {
  98.             Console.WriteLine($"Взвод №{index} имеет {_soldiers.Count} солдат. Общее здоровье солдат {_soldiers.Sum(soldier => soldier.Health)}. Общая сила солдат {_soldiers.Sum(soldier => soldier.Damage)}.");
  99.         }
  100.  
  101.         public Soldier GetSoldier()
  102.         {
  103.             Random random = new Random();
  104.             int index = random.Next(0, _soldiers.Count);
  105.  
  106.             return _soldiers[index];
  107.         }
  108.  
  109.         public void Remove(Soldier soldier)
  110.         {
  111.             _soldiers.Remove(soldier);
  112.         }
  113.  
  114.         public int SoldiersCount()
  115.         {
  116.             return _soldiers.Count;
  117.         }
  118.     }
  119.  
  120.     class Soldier
  121.     {
  122.         public int Health { get; private set; }
  123.         public int Damage { get; private set; }
  124.  
  125.         public Soldier()
  126.         {
  127.             Random random = new Random();
  128.             int minHealth = 50;
  129.             int maxHealth = 120;
  130.             Health = random.Next(minHealth, maxHealth);
  131.  
  132.             int minDamage = 50;
  133.             int maxDamage = 120;
  134.             Damage = random.Next(minDamage, maxDamage);
  135.         }
  136.  
  137.         public void TakeDamage(int damage)
  138.         {
  139.             Health -= damage;
  140.         }
  141.     }
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement