Advertisement
Fle2x

6.8

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