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)
- {
- Random random = new Random();
- bool isWorking = true;
- while (isWorking)
- {
- Fighter[] fighters = { new Necromancer("Ксардас", 15, 250, 13, 10, (random.Next(10, 300) / 100.0f)), new Mag("Милтен", 10, 340, 15, 113, (random.Next(10, 300) / 100f)), new Knight("Лестр", 20, 250, 10, 200, (random.Next(10, 300) / 100f)), new Mag("Сатурас", 20, 200, 10, 200, (random.Next(10, 300) / 100f)), new Necromancer("Диего", 25, 250, 15, 50, (random.Next(10, 300) / 100f)) };
- Console.ReadKey();
- Console.Clear();
- 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();
- int value;
- if (indexFirstFighter != indexSecondFighter && int.TryParse(indexFirstFighter, out value) && int.TryParse(indexSecondFighter, out value))
- {
- if (Convert.ToInt32(indexFirstFighter) <= 5 && Convert.ToInt32(indexFirstFighter) >= 1 && Convert.ToInt32(indexSecondFighter) <= 5 && Convert.ToInt32(indexSecondFighter) >= 1)
- {
- Fighter firstFighter = fighters[Convert.ToInt32(indexFirstFighter) - 1];
- Fighter secondFighter = fighters[Convert.ToInt32(indexSecondFighter) - 1];
- firstFighter.ShowStats(true);
- secondFighter.ShowStats(true);
- Fight(firstFighter,secondFighter);
- }
- else
- {
- Console.WriteLine("не правильно выбран герой");
- }
- }
- else
- {
- Console.WriteLine("Боец поставлен против себя, или же вы указали не то число при выборе героя");
- }
- }
- }
- public static void Fight(Fighter firstFighter, Fighter secondFighter)
- {
- while (firstFighter.Health > 0 && secondFighter.Health > 0)
- {
- 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.Health > 0)
- {
- Console.WriteLine($"Победил боец: {firstFighter.Name}");
- }
- else
- {
- Console.WriteLine($"Победил боец: {secondFighter.Name}");
- }
- }
- }
- }
- class Fighter
- {
- private string _name;
- private float _damage;
- private float _health;
- private int _armor;
- private int _mana;
- private float _luck;
- private string _warriorClass;
- public string Name { get { return _name; } set { _name = value; } }
- public float Health { get { return _health; } set { _health = value; } }
- public float Damage { get { return _damage; } set { _damage = value; } }
- public int Armor { get { return _armor; } set { _armor = value; } }
- public int Mana { get { return _mana; } set { _mana = value; } }
- public float Luck { get { return _luck; } set { _luck = value; } }
- public string WarriorClass { get { return _warriorClass; } set { _warriorClass = value; } }
- public Fighter(string name, int damage, int health, int armor, int mana, float luck)
- {
- Name = name;
- Damage = damage;
- Health = health;
- Armor = armor;
- Mana = mana;
- Luck = luck;
- }
- public void TakeDamage(float damage)
- {
- float damageReceived = damage - _armor;
- if (damageReceived < 0)
- {
- damageReceived = 0;
- }
- else
- {
- Health -= damageReceived / Luck;
- }
- }
- 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, float luck) : base(name, damage, health, armor, mana, luck)
- {
- }
- public float CastClouds()
- {
- Luck += 0.1f;
- Damage += 1 * Luck;
- Console.WriteLine($"{Name} навеял тучи, урон возрос на {1 * Luck}");
- Luck -= 0.1f;
- return Damage;
- }
- override public float UseSpecialAttack()
- {
- return CastClouds();
- }
- }
- class Knight : Fighter
- {
- public Knight(string name, int damage, int health, int armor, int mana, float luck) : base(name, damage, health, armor, mana, luck)
- {
- }
- public float Pray()
- {
- int manaСost = (int)(10 / Luck);
- if (manaСost < Mana)
- {
- Console.WriteLine($"{Name} Помолился: его атаки стали сильнее, а здоровье больше");
- Mana -= manaСost;
- Damage += 1;
- Health += Health / 10;
- return Damage;
- }
- else
- {
- Console.WriteLine($"У {Name} не хватает маны на особую атаку, и он совершил простую атаку мечом");
- return Damage;
- }
- }
- override public float UseSpecialAttack()
- {
- return Pray();
- }
- }
- class Mag : Fighter
- {
- public Mag(string name, int damage, int health, int armor, int mana, float luck) : base(name, damage, health, armor,mana, luck)
- {
- }
- public float UseSpells()
- {
- int manaСost = (int)(10 / Luck);
- if (Mana > manaСost)
- {
- Console.WriteLine($"{Name} Бросил огненный шар в противника и попытался укрепить свое тело магией");
- Armor += (int)(1 * Luck);
- float FireBallDamage = 10;
- FireBallDamage = FireBallDamage * Luck;
- Mana -= manaСost;
- return FireBallDamage;
- }
- else
- {
- Console.WriteLine($"У {Name} не хватает маны на особую атаку, и он совершил простую атаку посохом");
- return Damage;
- }
- }
- override public float UseSpecialAttack()
- {
- return UseSpells();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement