Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ООП
- {
- class Program
- {
- static void Main(string[] args)
- {
- Battlefield platoons = new Battlefield();
- platoons.StartWar();
- }
- }
- class Battlefield
- {
- private Platoon _leftPlatoon = new Platoon();
- private Platoon _rightPlatoon = new Platoon();
- public Battlefield()
- {
- _leftPlatoon = new Platoon();
- _rightPlatoon = new Platoon();
- }
- public void StartWar()
- {
- while (_leftPlatoon.SoldiersCount() > 0 && _rightPlatoon.SoldiersCount() > 0)
- {
- ShowInfo();
- Fight();
- Console.ReadKey();
- }
- ShowInfo();
- ShowWinner();
- Console.ReadKey();
- }
- private void ShowInfo()
- {
- int number = 0;
- Console.Clear();
- _leftPlatoon.ShowInfo(++number);
- _rightPlatoon.ShowInfo(++number);
- }
- private void Fight()
- {
- Soldier leftSoldier = _leftPlatoon.GetSoldier();
- Soldier rightSoldier = _rightPlatoon.GetSoldier();
- leftSoldier.TakeDamage(rightSoldier.Damage);
- rightSoldier.TakeDamage(leftSoldier.Damage);
- if(leftSoldier.Health <= 0)
- {
- _leftPlatoon.Remove(leftSoldier);
- }
- if (rightSoldier.Health <= 0)
- {
- _rightPlatoon.Remove(rightSoldier);
- }
- }
- private void ShowWinner()
- {
- if(_leftPlatoon.SoldiersCount() <= 0 && _rightPlatoon.SoldiersCount() <= 0)
- Console.WriteLine("Ничья!");
- else if(_leftPlatoon.SoldiersCount() > 0)
- Console.WriteLine("Победил первый взвод!");
- else
- Console.WriteLine("Победил второй взвод!");
- }
- }
- class Platoon
- {
- private List<Soldier> _soldiers = new List<Soldier>();
- public Platoon()
- {
- int countSolders = 3;
- for(int i = 0; i < countSolders; i++)
- {
- _soldiers.Add(new Soldier());
- }
- }
- public void ShowInfo(int index)
- {
- Console.WriteLine($"Взвод №{index} имеет {_soldiers.Count} солдат. Общее здоровье солдат {_soldiers.Sum(soldier => soldier.Health)}. Общая сила солдат {_soldiers.Sum(soldier => soldier.Damage)}.");
- }
- public Soldier GetSoldier()
- {
- Random random = new Random();
- int index = random.Next(0, _soldiers.Count);
- return _soldiers[index];
- }
- public void Remove(Soldier soldier)
- {
- _soldiers.Remove(soldier);
- }
- public int SoldiersCount()
- {
- return _soldiers.Count;
- }
- }
- class Soldier
- {
- public int Health { get; private set; }
- public int Damage { get; private set; }
- public Soldier()
- {
- Random random = new Random();
- int minHealth = 50;
- int maxHealth = 120;
- Health = random.Next(minHealth, maxHealth);
- int minDamage = 50;
- int maxDamage = 120;
- Damage = random.Next(minDamage, maxDamage);
- }
- public void TakeDamage(int damage)
- {
- Health -= damage;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement