using System; using System.Collections.Generic; namespace _6._8 { class Program { static void Main(string[] args) { Squad leftSquad = new Squad(); Squad rightSquad = new Squad(); War war = new War(leftSquad, rightSquad); Console.WriteLine("Сколько солдат будет в 1 стране?"); int leftSoldiersCount = Convert.ToInt32(Console.ReadLine()); leftSquad.Create(leftSoldiersCount); leftSquad.Show(); Console.WriteLine("\nСколько солдат будет во 2 стране?"); int rightSoldiersCount = Convert.ToInt32(Console.ReadLine()); rightSquad.Create(rightSoldiersCount); rightSquad.Show(); war.Shoot(); war.ShowWinner(); } } class War { private readonly Squad _firstSquad; private readonly Squad _secondSquad; public War(Squad firstSquad, Squad secondSquad) { _firstSquad = firstSquad; _secondSquad = secondSquad; } public void Shoot() { while (_firstSquad.CountSoldiers > 0 && _secondSquad.CountSoldiers > 0) { Console.WriteLine("Атакует 1 страна"); _firstSquad.Attack(_secondSquad, _firstSquad); Console.WriteLine("Атакует 2 страна"); _secondSquad.Attack(_firstSquad, _secondSquad); } } public void ShowWinner() { if (_firstSquad.CountSoldiers > 0) { Console.WriteLine($"Победила 1 страна."); } else { Console.WriteLine($"Победила 2 страна."); } } } class Squad { private List _soldiers; public int CountSoldiers => _soldiers.Count; public Squad() { _soldiers = new List(); } public Soldier GetSoldiers(int soldier) { return _soldiers[soldier]; } public void Create(int count) { while (count > _soldiers.Count) { Console.WriteLine("Выберите бойца в ваш отряд.\n1 - Штурмовик\n2 - Медик\n3 - Разведчик\n4 - Танкист\n5 - Огнеметчик"); int userInput = Convert.ToInt32(Console.ReadLine()); switch (userInput) { case 1: _soldiers.Add(new StormTrooper()); break; case 2: _soldiers.Add(new Support()); break; case 3: _soldiers.Add(new Scout()); break; case 4: _soldiers.Add(new Tankman()); break; case 5: _soldiers.Add(new Flamethrowerman()); break; default: _soldiers.Add(new Soldier()); break; } } Console.Clear(); } public void Show() { Console.WriteLine("Ваш отряд:"); foreach (var soldier in _soldiers) { soldier.ShowStats(); } } public void Attack(Squad defenderSquad,Squad attackerSquad) { Random random = new Random(); int defenderId = random.Next(0, defenderSquad.CountSoldiers); int attackerId = random.Next(0, attackerSquad.CountSoldiers); var defender = defenderSquad.GetSoldiers(defenderId); var attacker = attackerSquad.GetSoldiers(attackerId); defender.TakeDamage(attacker); Console.WriteLine($"{defender.Name} получают урон {attacker.Damage} от {attacker.Name}"); defender.ShowStats(); if (defender.Health <= 0) { Console.WriteLine($"{defender.Name} погиб."); defenderSquad._soldiers.Remove(defender); } } } class Soldier { public string Name { get; private set; } public int Health { get; private set; } public int Damage { get; private set; } public Soldier(string name = "Soldier", int health = 100, int damage = 10) { Name = name; Health = health; Damage = damage; } public void TakeDamage(Soldier soldier) { Health -= soldier.Damage; } public void ShowStats() { Console.WriteLine($"{Name}, HP - {Health}, damage - {Damage}"); } } class StormTrooper : Soldier { public StormTrooper() : base("Штурмовик", 100, 30) { } } class Support : Soldier { public Support() : base("Медик", 150, 15) { } } class Scout : Soldier { public Scout() : base("Разведчик", 80, 60) { } } class Tankman : Soldier { public Tankman() : base("Танкист", 200, 50) { } } class Flamethrowerman : Soldier { public Flamethrowerman() : base("Огнеметчик", 140, 40) { } } } {"mode":"full","isActive":false}