Advertisement
Fle2x

6.8.4

Jul 14th, 2021
682
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.59 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace _6._8
  5. {
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             Squad leftSquad = new Squad();
  11.             Squad rightSquad = new Squad();
  12.             War war = new War(leftSquad, rightSquad);
  13.  
  14.             Console.WriteLine("Сколько солдат будет в 1 стране?");
  15.             int leftSoldiersCount = Convert.ToInt32(Console.ReadLine());
  16.  
  17.             leftSquad.Create(leftSoldiersCount);
  18.             leftSquad.Show();
  19.  
  20.             Console.WriteLine("\nСколько солдат будет во 2 стране?");
  21.             int rightSoldiersCount = Convert.ToInt32(Console.ReadLine());
  22.             rightSquad.Create(rightSoldiersCount);
  23.             rightSquad.Show();
  24.  
  25.             war.Shoot();
  26.             war.ShowWinner();
  27.         }
  28.     }
  29.  
  30.     class War
  31.     {
  32.         private readonly Squad _firstSquad;
  33.         private readonly Squad _secondSquad;
  34.  
  35.         public War(Squad firstSquad, Squad secondSquad)
  36.         {
  37.             _firstSquad = firstSquad;
  38.             _secondSquad = secondSquad;
  39.         }
  40.  
  41.         public void Shoot()
  42.         {
  43.             while (_firstSquad.CountSoldiers > 0 && _secondSquad.CountSoldiers > 0)
  44.             {
  45.                 Console.WriteLine("Атакует 1 страна");
  46.                 _firstSquad.Attack(_secondSquad, _firstSquad);
  47.                 Console.WriteLine("Атакует 2 страна");
  48.                 _secondSquad.Attack(_firstSquad, _secondSquad);
  49.             }
  50.         }
  51.  
  52.         public void ShowWinner()
  53.         {
  54.             if (_firstSquad.CountSoldiers > 0)
  55.             {
  56.                 Console.WriteLine($"Победила 1 страна.");
  57.             }
  58.             else
  59.             {
  60.                 Console.WriteLine($"Победила 2 страна.");
  61.             }
  62.         }
  63.     }
  64.  
  65.     class Squad
  66.     {
  67.         private List<Soldier> _soldiers;
  68.         public int CountSoldiers => _soldiers.Count;
  69.  
  70.         public Squad()
  71.         {
  72.             _soldiers = new List<Soldier>();
  73.         }
  74.  
  75.  
  76.         public Soldier GetSoldier(int soldier)
  77.         {
  78.             return _soldiers[soldier];
  79.         }
  80.  
  81.         public void Create(int count)
  82.         {
  83.             while (count > _soldiers.Count)
  84.             {
  85.                 Console.WriteLine("Выберите бойца в ваш отряд.\n1 - Штурмовик\n2 - Медик\n3 - Разведчик\n4 - Танкист\n5 - Огнеметчик");
  86.                 int userInput = Convert.ToInt32(Console.ReadLine());
  87.  
  88.                 switch (userInput)
  89.                 {
  90.                     case 1:
  91.                         _soldiers.Add(new StormTrooper());
  92.                         break;
  93.                     case 2:
  94.                         _soldiers.Add(new Support());
  95.                         break;
  96.                     case 3:
  97.                         _soldiers.Add(new Scout());
  98.                         break;
  99.                     case 4:
  100.                         _soldiers.Add(new Tankman());
  101.                         break;
  102.                     case 5:
  103.                         _soldiers.Add(new Flamethrowerman());
  104.                         break;
  105.                     default:
  106.                         _soldiers.Add(new Soldier());
  107.                         break;
  108.                 }
  109.             }
  110.             Console.Clear();
  111.         }
  112.  
  113.         public void Show()
  114.         {
  115.             Console.WriteLine("Ваш отряд:");
  116.             foreach (var soldier in _soldiers)
  117.             {
  118.                 soldier.ShowStats();
  119.             }
  120.         }
  121.  
  122.         public void Attack(Squad defenderSquad,Squad attackerSquad)
  123.         {
  124.             Random random = new Random();
  125.             int defenderId = random.Next(0, defenderSquad.CountSoldiers);
  126.             int attackerId = random.Next(0, attackerSquad.CountSoldiers);
  127.  
  128.             var defender = defenderSquad.GetSoldier(defenderId);
  129.             var attacker = attackerSquad.GetSoldier(attackerId);
  130.  
  131.             defender.TakeDamage(attacker);
  132.             Console.WriteLine($"{defender.Name} получают урон {attacker.Damage} от {attacker.Name}");
  133.             defender.ShowStats();
  134.             if (defender.Health <= 0)
  135.             {
  136.                 Console.WriteLine($"{defender.Name} погиб.");
  137.                 defenderSquad._soldiers.Remove(defender);
  138.             }
  139.         }
  140.     }
  141.  
  142.     class Soldier
  143.     {
  144.         public string Name { get; private set; }
  145.         public int Health { get; private set; }
  146.         public int Damage { get; private set; }
  147.  
  148.         public Soldier(string name = "Soldier", int health = 100, int damage = 10)
  149.         {
  150.             Name = name;
  151.             Health = health;
  152.             Damage = damage;
  153.         }
  154.  
  155.         public void TakeDamage(Soldier soldier)
  156.         {
  157.             Health -= soldier.Damage;
  158.         }
  159.  
  160.         public void ShowStats()
  161.         {
  162.             Console.WriteLine($"{Name}, HP - {Health}, damage - {Damage}");
  163.         }
  164.     }
  165.  
  166.     class StormTrooper : Soldier
  167.     {
  168.         public StormTrooper() : base("Штурмовик", 100, 30) { }
  169.     }
  170.  
  171.     class Support : Soldier
  172.     {
  173.         public Support() : base("Медик", 150, 15) { }
  174.     }
  175.  
  176.     class Scout : Soldier
  177.     {
  178.         public Scout() : base("Разведчик", 80, 60) { }
  179.     }
  180.  
  181.     class Tankman : Soldier
  182.     {
  183.         public Tankman() : base("Танкист", 200, 50) { }
  184.     }
  185.  
  186.     class Flamethrowerman : Soldier
  187.     {
  188.         public Flamethrowerman() : base("Огнеметчик", 140, 40) { }
  189.     }
  190. }
  191.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement