Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- internal class Program
- {
- //Есть 2 взвода. 1 взвод страны один, 2 взвод страны два.
- //Каждый взвод внутри имеет солдат.
- //Нужно написать программу, которая будет моделировать бой этих взводов.
- //Каждый боец - это уникальная единица, он может иметь уникальные способности или же уникальные характеристики, такие как повышенная сила.
- //Побеждает та страна, во взводе которой остались выжившие бойцы.
- //Не важно, какой будет бой, рукопашный, стрелковый.
- static void Main(string[] args)
- {
- new Battle().Start();
- }
- class Soldier
- {
- public string Name { get; private set; }
- public int Health { get; private set; }
- public int Damage { get; private set; }
- public int Accuracy { get; private set; }
- public Soldier(string name, int damage, int accuracy)
- {
- Name = name;
- Health = 100;
- Damage = damage;
- Accuracy = accuracy;
- }
- public int Atack()
- {
- int damage = 0;
- int minRandom = 1;
- int maxRandom = 101;
- Random random = new Random();
- if (random.Next(minRandom, maxRandom) < Accuracy)
- {
- damage = Damage;
- }
- return damage;
- }
- public void TakeDamage(int damage)
- {
- Health -= damage;
- }
- public void ShowInfo()
- {
- Console.WriteLine($"{Name}: Здоровье - {Health}.");
- }
- }
- class Squad
- {
- private List<Soldier> _soldiers = new List<Soldier>();
- public string Name { get; private set; }
- public Squad(string name)
- {
- Name = name;
- }
- public void AddSoldier(Soldier[] soldiers)
- {
- _soldiers.AddRange(soldiers);
- }
- public void Attack(Squad squad)
- {
- int minRandom = 0;
- int maxRandom = squad._soldiers.Count;
- Random random = new Random();
- foreach (Soldier soldier in _soldiers)
- {
- int indexSoldier = random.Next(minRandom, maxRandom);
- int damage = soldier.Atack();
- squad._soldiers[indexSoldier].TakeDamage(damage);
- Console.WriteLine($"{soldier.Name} отряда {Name} нанес {damage} урона {squad._soldiers[indexSoldier].Name} отряда {squad.Name}.");
- }
- Console.WriteLine();
- Console.ReadKey();
- }
- public void ShowInfo()
- {
- Console.WriteLine($"Отряд {Name}:");
- foreach (Soldier soldier in _soldiers)
- {
- soldier.ShowInfo();
- }
- Console.WriteLine();
- }
- public void CheckSoldiers()
- {
- foreach (Soldier soldier in _soldiers)
- {
- if (soldier.Health <= 0)
- {
- Console.WriteLine($"{soldier.Name} из отряда {Name} был убит.");
- RemoveSoldier(soldier);
- break;
- }
- }
- }
- public bool AreSoldiersAlive()
- {
- if (_soldiers.Count == 0)
- {
- return false;
- }
- else
- {
- return true;
- }
- }
- private void RemoveSoldier(Soldier soldier)
- {
- _soldiers.Remove(soldier);
- Console.ReadKey();
- CheckSoldiers();
- }
- }
- class Battle
- {
- private Squad _squadFirst;
- private Squad _squadSecond;
- public Battle()
- {
- _squadFirst = new Squad("Деревня Скрытого листа");
- _squadSecond = new Squad("Остров Парадайз");
- FillSquad(_squadFirst);
- FillSquad(_squadSecond);
- }
- public void Start()
- {
- bool inBattle = true;
- while (inBattle)
- {
- _squadFirst.ShowInfo();
- _squadSecond.ShowInfo();
- Console.ReadKey();
- _squadFirst.Attack(_squadSecond);
- _squadSecond.Attack(_squadFirst);
- _squadFirst.CheckSoldiers();
- _squadSecond.CheckSoldiers();
- if (_squadFirst.AreSoldiersAlive() == false)
- {
- EndBattle(_squadSecond);
- inBattle = false;
- }
- else if (_squadSecond.AreSoldiersAlive() == false)
- {
- EndBattle(_squadFirst);
- inBattle = false;
- }
- Console.Clear();
- }
- }
- private void EndBattle(Squad squad)
- {
- Console.WriteLine($"\nПобедил отряд {squad.Name}.");
- Console.ReadKey();
- }
- private void FillSquad(Squad squad)
- {
- Soldier[] soldiers = { new Soldier("Снайпер", 25, 80), new Soldier("Стрелок", 10, 70), new Soldier("Штурмовик", 15, 60) };
- squad.AddSoldier(soldiers);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement