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 Battle
- {
- class Program
- {
- static void Main(string[] args)
- {
- Battle battle = new Battle();
- battle.Fight();
- Console.ReadKey();
- }
- }
- class Squad
- {
- protected List<Soldier> Soldiers { get; private set; }
- public bool IsAlive => Soldiers.Count > 0;
- public Squad(int randomCount)
- {
- int SquadSize = 5;
- Soldiers = new List<Soldier>();
- Create(SquadSize, randomCount);
- }
- public void ShowInfo()
- {
- foreach (Soldier soldier in Soldiers)
- {
- Console.WriteLine($"HP: {soldier.Health} | DMG: {soldier.Damage}");
- }
- }
- public void TakeAim(Soldier enemy)
- {
- Random random = new Random();
- foreach (Soldier soldier in Soldiers)
- {
- soldier.ChooseTarget(enemy);
- }
- }
- public void RemoveSoldier()
- {
- for (int i = 0; i < Soldiers.Count; i++)
- {
- if (Soldiers[i].IsDead)
- {
- Soldiers.RemoveAt(i);
- }
- }
- }
- public void GetAttack()
- {
- foreach (Soldier soldier in Soldiers)
- {
- soldier.DealDamage();
- }
- }
- public Soldier GetSoldiers()
- {
- foreach (var soldier in Soldiers)
- {
- return soldier;
- }
- return null;
- }
- private void Create(int count, int randomCount)
- {
- Random random = new Random(randomCount);
- int highDamage = 9;
- int avarageDamage = 7;
- int lowDamage = 5;
- int highHealth = 15;
- int avarageHealth = 13;
- int lowHealth = 10;
- int[] listOfHealth = { lowHealth, avarageHealth, highHealth };
- int[] listOfDamage = { lowDamage, avarageDamage, highDamage };
- Soldier soldier;
- for (int i = 0; i < count; i++)
- {
- int healthIndex = random.Next(listOfHealth.Length);
- int damageIndex = random.Next(listOfDamage.Length);
- soldier = new Soldier(listOfHealth[healthIndex], listOfDamage[damageIndex]);
- Soldiers.Add(soldier);
- }
- }
- }
- class Soldier
- {
- public int Health { get; private set; }
- public int Damage { get; private set; }
- public Soldier Target { get; private set; }
- public bool IsDead => Health <= 0;
- public Soldier(int health, int damage)
- {
- Health = health;
- Damage = damage;
- }
- public void ChooseTarget(Soldier enemy)
- {
- if(Target != null || enemy.IsDead == false)
- {
- Target = enemy;
- }
- }
- public void DealDamage()
- {
- if(Target != null && Target.IsDead == false)
- {
- Target.TakeDamage(Damage);
- if (Target.IsDead)
- {
- Target = null;
- }
- }
- }
- private void TakeDamage(int damage)
- {
- Health -= damage;
- }
- }
- class Battle
- {
- private Squad _squad1;
- private Squad _squad2;
- public Battle()
- {
- _squad1 = new Squad(1);
- _squad2 = new Squad(2);
- }
- public void ShowInfo()
- {
- Console.WriteLine("\n[ -----------Squad 1-----------]");
- _squad1.ShowInfo();
- Console.WriteLine("\n[ -----------Squad 2-----------]");
- _squad2.ShowInfo();
- }
- public void Fight()
- {
- while (IsWinner() == false)
- {
- ShowInfo();
- _squad1.TakeAim(_squad2.GetSoldiers());
- _squad2.TakeAim(_squad1.GetSoldiers());
- _squad1.GetAttack();
- _squad2.GetAttack();
- _squad1.RemoveSoldier();
- _squad2.RemoveSoldier();
- Console.ReadKey();
- }
- }
- private bool IsWinner()
- {
- if (_squad1.IsAlive && _squad2.IsAlive)
- {
- return false;
- }
- else if (_squad1.IsAlive && _squad2.IsAlive == false)
- {
- Console.WriteLine("\nSquad 1 Win");
- return true;
- }
- else if (_squad1.IsAlive == false && _squad2.IsAlive)
- {
- Console.WriteLine("\nSquad 2 Win");
- return true;
- }
- else
- {
- Console.WriteLine("\nthere is no winner");
- return true;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement