Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- namespace ConsoleApp1
- {
- class Program
- {
- static void Main(string[] args)
- {
- Fighter[] fighters = {
- new Necromancer("Ксардас", 15, 250, 13, 100),
- new Mag("Милтен", 10, 340, 15, 113),
- new Knight("Лестр", 20, 250, 10, 200),
- new Mag("Сатурас", 20, 200, 10, 200),
- new Necromancer("Диего", 25, 250, 15, 50)
- };
- for (int i = 0; i < fighters.Length; i++)
- {
- Console.Write($"{i + 1}.");
- fighters[i].ShowStats();
- }
- Console.Write("Выберите первого бойца: ");
- string indexFirstFighter = Console.ReadLine();
- Console.Write("Выберите второго бойца: ");
- string indexSecondFighter = Console.ReadLine();
- if (CheckInputFighters(fighters, indexFirstFighter, indexSecondFighter))
- {
- Fighter firstFighter = fighters[Convert.ToInt32(indexFirstFighter) - 1];
- Fighter secondFighter = fighters[Convert.ToInt32(indexSecondFighter) - 1];
- firstFighter.ShowStats(true);
- secondFighter.ShowStats(true);
- Fight(firstFighter, secondFighter);
- }
- }
- public static bool CheckInputFighters(Fighter[] fighters, string indexFirstFighter, string indexSecondFighter)
- {
- int value;
- if (indexFirstFighter != indexSecondFighter && int.TryParse(indexFirstFighter, out value) && int.TryParse(indexSecondFighter, out value))
- {
- if (Convert.ToInt32(indexFirstFighter) <= fighters.Length && Convert.ToInt32(indexFirstFighter) >= 1 && Convert.ToInt32(indexSecondFighter) <= fighters.Length && Convert.ToInt32(indexSecondFighter) >= 1)
- {
- return true;
- }
- else
- {
- Console.WriteLine("не правильно выбран герой");
- }
- }
- else
- {
- Console.WriteLine("Боец поставлен против себя, или же вы указали не то число при выборе героя");
- }
- return false;
- }
- public static void Fight(Fighter firstFighter, Fighter secondFighter)
- {
- while (firstFighter.isAlive && secondFighter.isAlive)
- {
- Console.ReadKey();
- Console.Clear();
- firstFighter.ShowStats(true);
- secondFighter.ShowStats(true);
- secondFighter.TakeDamage(firstFighter.UseSpecialAttack());
- Console.ReadKey();
- Console.WriteLine();
- firstFighter.TakeDamage(secondFighter.UseSpecialAttack());
- }
- Console.Clear();
- firstFighter.ShowStats(true);
- secondFighter.ShowStats(true);
- if (firstFighter.HealthWarrior > 0)
- {
- Console.WriteLine($"Победил боец: {firstFighter.NameWarrior}");
- }
- else if (firstFighter.HealthWarrior <=0 && secondFighter.HealthWarrior <= 0)
- {
- Console.WriteLine("Ничья");
- }
- else
- {
- Console.WriteLine($"Победил боец: {secondFighter.NameWarrior}");
- }
- }
- }
- }
- class Fighter
- {
- private Random _random;
- protected string Name;
- protected float Damage;
- protected float Health;
- protected int Armor;
- protected int Mana;
- protected float Luck;
- public bool isAlive => Health > 0;
- public float HealthWarrior { get { return Health; } }
- public string NameWarrior { get { return Name; } }
- public Fighter(string name, int damage, int health, int armor, int mana)
- {
- _random = new Random();
- Name = name;
- Damage = damage;
- Health = health;
- Armor = armor;
- Mana = mana;
- Luck = _random.Next(10, 300) / 100.0f;
- }
- public void TakeDamage(float damage)
- {
- if (damage > 0 && damage > Armor)
- {
- Health -= damage - Armor;
- }
- }
- public void ShowStats(bool ViewLuck = false)
- {
- if (ViewLuck)
- {
- Console.WriteLine($"Имя: {Name} || Жизнь: {Health} || Броня: {Armor} || Мана: {Mana} || Урон: {Damage} || Удача: {Luck}");
- }
- else
- {
- Console.WriteLine($"Имя: {Name} || Жизнь: {Health} || Броня: {Armor} || Мана: {Mana} || Урон: {Damage} || Удача: ???");
- }
- }
- virtual public float UseSpecialAttack()
- {
- return Damage;
- }
- }
- class Necromancer : Fighter
- {
- public Necromancer(string name, int damage, int health, int armor, int mana) : base(name, damage, health, armor, mana)
- {
- }
- override public float UseSpecialAttack()
- {
- int constManaCost = 10;
- float addDamage = 1;
- float addLuck = 0.1f;
- int manaCost = (int)(constManaCost / Luck);
- if (manaCost < Mana)
- {
- Luck += addLuck;
- Damage += addDamage * Luck;
- Mana -= manaCost;
- Console.WriteLine($"{Name} навеял тучи, урон возрос на {addDamage * Luck}");
- Luck -= addLuck;
- }
- else
- {
- Console.WriteLine($"{Name} не хватает маны на особую атаку, и он совершил простую атаку");
- }
- return Damage;
- }
- }
- class Knight : Fighter
- {
- public Knight(string name, int damage, int health, int armor, int mana) : base(name, damage, health, armor, mana)
- {
- }
- override public float UseSpecialAttack()
- {
- int constManaCost = 10;
- int addDamage = 1;
- float addHealth = 10;
- int manaСost = (int)(constManaCost / Luck);
- if (manaСost < Mana)
- {
- Console.WriteLine($"{Name} Помолился: его атаки стали сильнее, а здоровье больше");
- Mana -= manaСost;
- Damage += addDamage;
- Health += Health / addHealth;
- }
- else
- {
- Console.WriteLine($"У {Name} не хватает маны на особую атаку, и он совершил простую атаку мечом");
- }
- return Damage;
- }
- }
- class Mag : Fighter
- {
- public Mag(string name, int damage, int health, int armor, int mana) : base(name, damage, health, armor, mana)
- {
- }
- override public float UseSpecialAttack()
- {
- int constManaCost = 10;
- int addArmor = 1;
- float FireBallDamage = 10;
- int manaСost = (int)(constManaCost / Luck);
- if (Mana > manaСost)
- {
- Console.WriteLine($"{Name} Бросил огненный шар в противника и попытался укрепить свое тело магией");
- Armor += (int)(addArmor * Luck);
- FireBallDamage = FireBallDamage * Luck;
- Mana -= manaСost;
- return FireBallDamage;
- }
- else
- {
- Console.WriteLine($"У {Name} не хватает маны на особую атаку, и он совершил простую атаку посохом");
- return Damage;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement