W1thr

ООП-8

Mar 28th, 2021 (edited)
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.53 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace Homework8
  5. {
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             Troop troop1 = new Troop(12);
  11.             Troop troop2 = new Troop(12);
  12.             Arena arena = new Arena();
  13.  
  14.             arena.Fight(troop1, troop2);
  15.         }
  16.     }
  17.  
  18.     class Arena
  19.     {
  20.         public void Fight(Troop troop1, Troop troop2)
  21.         {
  22.             bool troopHasSoldiers = true;
  23.             while (troopHasSoldiers == true)
  24.             {
  25.                 int timeToFight = 30;
  26.  
  27.                 Console.WriteLine("--Взвод1--");
  28.                 troop1.ShowStats();
  29.                 Console.WriteLine("--Взвод2--");
  30.                 troop2.ShowStats();
  31.  
  32.                 Soldier soldier1 = troop1.Soldiers.Peek();
  33.                 Soldier soldier2 = troop2.Soldiers.Peek();
  34.  
  35.                 soldier1.Attack(soldier2);
  36.                 soldier2.Attack(soldier1);
  37.  
  38.                 troop1.FilterSoldiers();
  39.                 troop2.FilterSoldiers();
  40.  
  41.                 troopHasSoldiers = (troop1.Soldiers.Count > 0 && troop2.Soldiers.Count > 0);
  42.  
  43.                 System.Threading.Thread.Sleep(timeToFight);
  44.                 Console.Clear();
  45.             }
  46.  
  47.             Console.WriteLine(troop1.Capacity + " Солдат осталось в первом взводе");
  48.             Console.WriteLine(troop2.Capacity + " Солдат осталось во втором взводе");
  49.  
  50.             if (troop2.Capacity == 0 && troop1.Capacity > 0)
  51.             {
  52.                 Console.WriteLine("Первый взвод победил!");
  53.             }
  54.             else if (troop1.Capacity == 0 && troop2.Capacity > 0)
  55.             {
  56.                 Console.WriteLine("Второй взвод победил!");
  57.             }
  58.             else
  59.             {
  60.                 Console.WriteLine("Ничья!");
  61.             }
  62.  
  63.             Console.ReadKey();
  64.         }
  65.     }
  66.  
  67.     class Troop
  68.     {
  69.         public Queue<Soldier> Soldiers { get; private set; }
  70.         public int Capacity { get; private set; }
  71.  
  72.         public Troop(int capacity)
  73.         {
  74.             Soldiers = new Queue<Soldier>();
  75.  
  76.             for (int i = 0; i < capacity; i++)
  77.             {
  78.                 Soldiers.Enqueue(new Soldier());
  79.             }
  80.             Capacity = capacity;
  81.         }
  82.  
  83.         public void ShowStats()
  84.         {
  85.             foreach (var soldier in Soldiers)
  86.             {
  87.                 soldier.ShowInfo();
  88.             }
  89.             Console.WriteLine();
  90.         }
  91.  
  92.         public void FilterSoldiers()
  93.         {
  94.             if (Soldiers.Peek().Health <= 0)
  95.             {
  96.                 Soldiers.Dequeue();
  97.                 Capacity--;
  98.             }
  99.         }
  100.     }
  101.  
  102.     class Soldier
  103.     {
  104.         private static Random _random;
  105.  
  106.         public int Health { get; private set; }
  107.         public int Damage { get; private set; }
  108.  
  109.         static Soldier()
  110.         {
  111.             _random = new Random();
  112.         }
  113.  
  114.         public Soldier()
  115.         {
  116.             Health = _random.Next(15, 25);
  117.             Damage = _random.Next(8, 13);
  118.         }
  119.  
  120.         public void ShowInfo()
  121.         {
  122.             Console.WriteLine("Здоровье - " + Health);
  123.             Console.WriteLine("Урон - " + Damage);
  124.         }
  125.  
  126.         public void Attack(Soldier soldier)
  127.         {
  128.             soldier.TakeDamage(Damage);
  129.         }
  130.  
  131.         private void TakeDamage(int damage)
  132.         {
  133.             Health -= damage;
  134.         }
  135.     }
  136.  
  137. }
  138.  
Add Comment
Please, Sign In to add comment