Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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<Soldier> _soldiers;
- public int CountSoldiers => _soldiers.Count;
- public Squad()
- {
- _soldiers = new List<Soldier>();
- }
- public Soldier GetSoldier(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.GetSoldier(defenderId);
- var attacker = attackerSquad.GetSoldier(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) { }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement