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 FightClub
- {
- class Program
- {
- static void Main(string[] args)
- {
- FightClub fightClub = new FightClub();
- fightClub.ShowFightersInfo();
- fightClub.StartFight();
- Console.ReadKey();
- }
- }
- class FightClub
- {
- private List<Fighter> _fighters;
- public FightClub()
- {
- _fighters = new List<Fighter>();
- Fighter mage, assassin, warrior, necromant, paladin;
- mage = new Mage("Mage", 100, 3, 20, 5);
- assassin = new Assassin("Assassin", 90, 5, 20);
- warrior = new Warrior("Warrior", 120, 1, 20);
- necromant = new Necromant("Necromant", 110, 2, 20);
- paladin = new Paladin("Paladin", 95, 4, 20);
- _fighters.Add(mage);
- _fighters.Add(assassin);
- _fighters.Add(warrior);
- _fighters.Add(necromant);
- _fighters.Add(paladin);
- }
- public void ShowFightersInfo()
- {
- for (int i = 0; i < _fighters.Count; i++)
- {
- Console.Write(i + 1 + ".");
- _fighters[i].ShowStats();
- }
- }
- private Fighter ChooseFighters()
- {
- Fighter fighter;
- string userInput;
- int fighterIndex;
- int number;
- bool isNumber;
- do
- {
- do
- {
- userInput = Console.ReadLine();
- isNumber = int.TryParse(userInput, out number);
- }
- while (isNumber == false);
- fighterIndex = Convert.ToInt32(userInput) - 1;
- }
- while (fighterIndex < 0 || fighterIndex >= _fighters.Count);
- fighter = _fighters[fighterIndex];
- fighter.ShowSkillInfo();
- return fighter;
- }
- public void StartFight()
- {
- Fighter fighter1, fighter2;
- Console.WriteLine("\nВыберите первого бойца: ");
- fighter1 = ChooseFighters();
- Console.WriteLine("\nВыберите второго бойца: ");
- fighter2 = ChooseFighters();
- Console.WriteLine("\nБой Начался");
- Console.WriteLine("\nБоец №1:");
- fighter1.ShowStats();
- Console.WriteLine("Боец №2:");
- fighter2.ShowStats();
- Console.WriteLine();
- while (fighter1.IsAlive() && fighter2.IsAlive())
- {
- fighter1.TakeDamage(fighter2.CastSkill());
- fighter2.TakeDamage(fighter1.CastSkill());
- fighter1.ShowStats();
- fighter2.ShowStats();
- Console.WriteLine();
- if (fighter1.IsAlive() == false && fighter2.IsAlive() == false)
- {
- Console.WriteLine("Ничья");
- }
- else if (fighter1.IsAlive() && fighter2.IsAlive() == false)
- {
- Console.WriteLine($"Победил - {fighter1.Name}");
- }
- else if (fighter1.IsAlive() == false && fighter2.IsAlive())
- {
- Console.WriteLine($"Победил - {fighter2.Name}");
- }
- Console.ReadKey();
- }
- }
- }
- class Fighter
- {
- protected int Armor;
- protected int Health;
- protected int Damage;
- public string Name { get; protected set; }
- public bool IsAlive() => Health > 0;
- public Fighter(string name, int health, int armor, int damage)
- {
- Name = name;
- Health = health;
- Armor = armor;
- Damage = damage;
- }
- public void TakeDamage(int damage)
- {
- Health -= damage - Armor;
- }
- public void ShowStats()
- {
- Console.WriteLine($"{Name}, Health - {Health}, Armor - {Armor}, Damage - {Damage}");
- }
- public virtual void ShowSkillInfo()
- {
- }
- public virtual int CastSkill()
- {
- return Damage;
- }
- }
- class Mage : Fighter
- {
- private int _maxCharge;
- public Mage(string name, int health, int armor, int damage, int charge) : base(name, health, armor, damage)
- {
- _maxCharge = charge;
- }
- public override void ShowSkillInfo()
- {
- Console.WriteLine($"Боец {Name} | Способность - после {_maxCharge} ударов заряжает посох и наносит повышенный урон ");
- }
- public override int CastSkill()
- {
- int damage = Damage;
- int increaseDamage = 5;
- _maxCharge--;
- if(_maxCharge == 0)
- {
- Console.WriteLine($"{Name} - разрядил оружие({damage * increaseDamage} damage)");
- _maxCharge = 3;
- return damage * increaseDamage;
- }
- return damage;
- }
- }
- class Assassin : Fighter
- {
- private Random kritChance = new Random();
- public Assassin(string name, int health, int armor, int damage) : base(name, health, armor, damage) { }
- public override void ShowSkillInfo()
- {
- Console.WriteLine($"Боец - {Name} | Способность - пассивный шанс нанести повышенный урон");
- }
- public override int CastSkill()
- {
- int damage;
- int increaseDamgae = 3;
- damage = Damage;
- if(kritChance.Next(3) == 1)
- {
- Console.WriteLine($"{Name} - Critical hit({damage * increaseDamgae} damage)");
- return damage * increaseDamgae;
- }
- return damage;
- }
- }
- class Warrior : Fighter
- {
- private int _fullHealth;
- public Warrior(string name, int health, int armor, int damage) : base(name, health, armor, damage) { _fullHealth = health; }
- public override void ShowSkillInfo()
- {
- Console.WriteLine($"Боец - {Name} | Способность - при потере половины здоровья увеличивает броню и урон");
- }
- public override int CastSkill()
- {
- int increaseDamage = 5;
- int increaseArmor = 1;
- if (Health <= _fullHealth/2)
- {
- Damage += increaseDamage;
- Armor += increaseArmor;
- Console.WriteLine($"{Name} - Damage UP, Armor UP");
- }
- return Damage;
- }
- }
- class Necromant : Fighter
- {
- public Necromant(string name, int health, int armor, int damage) : base(name, health, armor, damage) { }
- public override void ShowSkillInfo()
- {
- Console.WriteLine($"Боец - {Name} | Способность - пассивный вампиризм");
- }
- public override int CastSkill()
- {
- int healthStill = Damage / 3;
- Health += healthStill;
- return Damage;
- }
- }
- class Paladin : Fighter
- {
- public Paladin(string name, int health, int armor, int damage) : base(name, health, armor, damage) { }
- public override void ShowSkillInfo()
- {
- Console.WriteLine($"Боец - {Name} | Способность - восстанавливать здоровье");
- }
- public override int CastSkill()
- {
- int increaseHealth = 10;
- Health += increaseHealth;
- return Damage;
- }
- }
- }
Add Comment
Please, Sign In to add comment