Advertisement
NikaBang

Великая война шиноби

Aug 20th, 2022 (edited)
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.69 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. internal class Program
  5. {
  6.     //Есть 2 взвода. 1 взвод страны один, 2 взвод страны два.
  7.     //Каждый взвод внутри имеет солдат.
  8.     //Нужно написать программу, которая будет моделировать бой этих взводов.
  9.     //Каждый боец - это уникальная единица, он может иметь уникальные способности или же уникальные характеристики, такие как повышенная сила.
  10.     //Побеждает та страна, во взводе которой остались выжившие бойцы.
  11.     //Не важно, какой будет бой, рукопашный, стрелковый.
  12.     static void Main(string[] args)
  13.     {
  14.         new Battle().Start();
  15.     }
  16.  
  17.     class Soldier
  18.     {
  19.         public string Name { get; private set; }
  20.         public int Health { get; private set; }
  21.         public int Damage { get; private set; }
  22.         public int Accuracy { get; private set; }
  23.  
  24.         public Soldier(string name, int damage, int accuracy)
  25.         {
  26.             Name = name;
  27.             Health = 100;
  28.             Damage = damage;
  29.             Accuracy = accuracy;
  30.         }
  31.  
  32.         public int Atack()
  33.         {
  34.             int damage = 0;
  35.             int minRandom = 1;
  36.             int maxRandom = 101;
  37.             Random random = new Random();
  38.  
  39.             if (random.Next(minRandom, maxRandom) < Accuracy)
  40.             {
  41.                 damage = Damage;
  42.             }
  43.  
  44.             return damage;
  45.         }
  46.  
  47.         public void TakeDamage(int damage)
  48.         {
  49.             Health -= damage;
  50.         }
  51.  
  52.         public void ShowInfo()
  53.         {
  54.             Console.WriteLine($"{Name}: Здоровье - {Health}.");
  55.         }
  56.     }
  57.  
  58.     class Squad
  59.     {
  60.         private List<Soldier> _soldiers = new List<Soldier>();
  61.         public string Name { get; private set; }
  62.  
  63.         public Squad(string name)
  64.         {
  65.             Name = name;
  66.         }
  67.  
  68.         public void AddSoldier(Soldier[] soldiers)
  69.         {
  70.             _soldiers.AddRange(soldiers);
  71.         }
  72.  
  73.         public void Attack(Squad squad)
  74.         {
  75.             int minRandom = 0;
  76.             int maxRandom = squad._soldiers.Count;
  77.             Random random = new Random();
  78.  
  79.             foreach (Soldier soldier in _soldiers)
  80.             {
  81.                 int indexSoldier = random.Next(minRandom, maxRandom);
  82.                 int damage = soldier.Atack();
  83.  
  84.                 squad._soldiers[indexSoldier].TakeDamage(damage);
  85.  
  86.                 Console.WriteLine($"{soldier.Name} отряда {Name} нанес {damage} урона {squad._soldiers[indexSoldier].Name} отряда {squad.Name}.");
  87.             }
  88.  
  89.             Console.WriteLine();
  90.             Console.ReadKey();
  91.         }
  92.  
  93.         public void ShowInfo()
  94.         {
  95.             Console.WriteLine($"Отряд {Name}:");
  96.  
  97.             foreach (Soldier soldier in _soldiers)
  98.             {
  99.                 soldier.ShowInfo();
  100.             }
  101.  
  102.             Console.WriteLine();
  103.         }
  104.  
  105.         public void CheckSoldiers()
  106.         {
  107.             foreach (Soldier soldier in _soldiers)
  108.             {
  109.                 if (soldier.Health <= 0)
  110.                 {
  111.                     Console.WriteLine($"{soldier.Name} из отряда {Name} был убит.");
  112.  
  113.                     RemoveSoldier(soldier);
  114.                     break;
  115.                 }
  116.             }
  117.         }
  118.  
  119.         public bool AreSoldiersAlive()
  120.         {
  121.             if (_soldiers.Count == 0)
  122.             {
  123.                 return false;
  124.             }
  125.             else
  126.             {
  127.                 return true;
  128.             }
  129.         }
  130.  
  131.         private void RemoveSoldier(Soldier soldier)
  132.         {
  133.             _soldiers.Remove(soldier);
  134.             Console.ReadKey();
  135.             CheckSoldiers();
  136.         }
  137.     }
  138.  
  139.     class Battle
  140.     {
  141.         private Squad _squadFirst;
  142.         private Squad _squadSecond;
  143.  
  144.         public Battle()
  145.         {
  146.             _squadFirst = new Squad("Деревня Скрытого листа");
  147.             _squadSecond = new Squad("Остров Парадайз");
  148.  
  149.             FillSquad(_squadFirst);
  150.             FillSquad(_squadSecond);
  151.         }
  152.  
  153.         public void Start()
  154.         {
  155.             bool inBattle = true;
  156.  
  157.             while (inBattle)
  158.             {
  159.                 _squadFirst.ShowInfo();
  160.                 _squadSecond.ShowInfo();
  161.                 Console.ReadKey();
  162.  
  163.                 _squadFirst.Attack(_squadSecond);
  164.                 _squadSecond.Attack(_squadFirst);
  165.  
  166.                 _squadFirst.CheckSoldiers();
  167.                 _squadSecond.CheckSoldiers();
  168.  
  169.                 if (_squadFirst.AreSoldiersAlive() == false)
  170.                 {
  171.                     EndBattle(_squadSecond);
  172.                     inBattle = false;
  173.                 }
  174.                 else if (_squadSecond.AreSoldiersAlive() == false)
  175.                 {
  176.                     EndBattle(_squadFirst);
  177.                     inBattle = false;
  178.                 }
  179.  
  180.                 Console.Clear();
  181.             }
  182.         }
  183.  
  184.         private void EndBattle(Squad squad)
  185.         {
  186.             Console.WriteLine($"\nПобедил отряд {squad.Name}.");
  187.             Console.ReadKey();
  188.         }
  189.  
  190.         private void FillSquad(Squad squad)
  191.         {
  192.             Soldier[] soldiers = { new Soldier("Снайпер", 25, 80), new Soldier("Стрелок", 10, 70), new Soldier("Штурмовик", 15, 60) };
  193.  
  194.             squad.AddSoldier(soldiers);
  195.         }
  196.     }
  197. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement