View difference between Paste ID: mA5HPY61 and sg6etV50
SHOW: | | - or go back to the newest paste.
1
using System;
2
using System.Collections.Generic;
3
namespace ConsoleApp1
4
{
5
    class Program
6
    {
7
        static void Main(string[] args)
8
        {
9-
            Fighter[] fighters = {
9+
            Random random = new Random();
10-
                new Necromancer("Ксардас", 15, 250, 13, 100),
10+
            bool isWorking = true;
11-
                new Mag("Милтен", 10, 340, 15, 113),
11+
12-
                new Knight("Лестр", 20, 250, 10, 200),
12+
            while (isWorking)
13-
                new Mag("Сатурас", 20, 200, 10, 200),
13+
14-
                new Necromancer("Диего", 25, 250, 15, 50)
14+
                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)) };
15-
            };
15+
16
                Console.Clear();
17-
            for (int i = 0; i < fighters.Length; i++)
17+
18
                for (int i = 0; i < fighters.Length; i++)
19-
                Console.Write($"{i + 1}.");
19+
20-
                fighters[i].ShowStats();
20+
                    Console.Write($"{i + 1}.");
21
                    fighters[i].ShowStats();
22
                }
23-
            Console.Write("Выберите первого бойца: ");
23+
24-
            string indexFirstFighter = Console.ReadLine();
24+
                Console.Write("Выберите первого бойца: ");
25-
            Console.Write("Выберите второго бойца: ");
25+
                string indexFirstFighter = Console.ReadLine();
26-
            string indexSecondFighter = Console.ReadLine();
26+
                Console.Write("Выберите второго бойца: ");
27
                string indexSecondFighter = Console.ReadLine();
28-
            if (CheckInputFighters(fighters, indexFirstFighter, indexSecondFighter))
28+
                int value;
29
30-
                Fighter firstFighter = fighters[Convert.ToInt32(indexFirstFighter) - 1];
30+
                if (indexFirstFighter != indexSecondFighter && int.TryParse(indexFirstFighter, out value) && int.TryParse(indexSecondFighter, out value))
31-
                Fighter secondFighter = fighters[Convert.ToInt32(indexSecondFighter) - 1];
31+
32
33
                    if (Convert.ToInt32(indexFirstFighter) <= 5 && Convert.ToInt32(indexFirstFighter) >= 1 && Convert.ToInt32(indexSecondFighter) <= 5 && Convert.ToInt32(indexSecondFighter) >= 1)
34-
                Fight(firstFighter, secondFighter);
34+
                    {
35
                        Fighter firstFighter = fighters[Convert.ToInt32(indexFirstFighter) - 1];
36
                        Fighter secondFighter = fighters[Convert.ToInt32(indexSecondFighter) - 1];
37
                        firstFighter.ShowStats(true);
38-
        public static bool CheckInputFighters(Fighter[] fighters, string indexFirstFighter, string indexSecondFighter)
38+
                        secondFighter.ShowStats(true);
39
                        Fight(firstFighter,secondFighter);
40-
            int value;
40+
                    }
41
                    else
42-
            if (indexFirstFighter != indexSecondFighter && int.TryParse(indexFirstFighter, out value) && int.TryParse(indexSecondFighter, out value))
42+
                    {
43
                        Console.WriteLine("не правильно выбран герой");
44
                    }
45-
                if (Convert.ToInt32(indexFirstFighter) <= fighters.Length && Convert.ToInt32(indexFirstFighter) >= 1 && Convert.ToInt32(indexSecondFighter) <= fighters.Length && Convert.ToInt32(indexSecondFighter) >= 1)
45+
46
                else
47-
                    return true;
47+
48
                    Console.WriteLine("Боец поставлен против себя, или же вы указали не то число при выборе героя");
49
                }
50
            }
51-
                    Console.WriteLine("не правильно выбран герой");
51+
52
53
        public static void Fight(Fighter firstFighter, Fighter secondFighter)
54
        {
55
56-
                Console.WriteLine("Боец поставлен против себя, или же вы указали не то число при выборе героя");
56+
            while (firstFighter.Health > 0 && secondFighter.Health > 0)
57
            {
58-
            return false;
58+
59
                Console.Clear();
60
                firstFighter.ShowStats(true);
61
                secondFighter.ShowStats(true);
62
                secondFighter.TakeDamage(firstFighter.UseSpecialAttack());
63-
            
63+
64-
            while (firstFighter.isAlive && secondFighter.isAlive)
64+
65
                firstFighter.TakeDamage(secondFighter.UseSpecialAttack());
66
            }
67
68
            Console.Clear();
69
            firstFighter.ShowStats(true);
70
            secondFighter.ShowStats(true);
71
72
            if (firstFighter.Health > 0)
73
            {
74
                Console.WriteLine($"Победил боец: {firstFighter.Name}");
75
            }
76
            else
77
            {
78
                Console.WriteLine($"Победил боец: {secondFighter.Name}");
79
            }
80-
            if (firstFighter.HealthWarrior > 0)
80+
81
    }
82-
                Console.WriteLine($"Победил боец: {firstFighter.NameWarrior}");
82+
83
84-
            else if (firstFighter.HealthWarrior <=0 && secondFighter.HealthWarrior <= 0)
84+
85
{
86-
                Console.WriteLine("Ничья");
86+
    private string _name;
87
    private float _damage;
88
    private float _health;
89
    private int _armor;
90-
                Console.WriteLine($"Победил боец: {secondFighter.NameWarrior}");
90+
    private int _mana;
91
    private float _luck;
92
    private string _warriorClass;
93
94
    public string Name { get { return _name; } set { _name = value; } }
95
96
    public float Health { get { return _health; } set { _health = value; } }
97
98-
    private Random _random;
98+
    public float Damage { get { return _damage; } set { _damage = value; } }
99-
    protected string Name;
99+
100-
    protected float Damage;
100+
    public int Armor { get { return _armor; } set { _armor = value; } }
101-
    protected float Health;
101+
102-
    protected int Armor;
102+
    public int Mana { get { return _mana; } set { _mana = value; } }
103-
    protected int Mana;
103+
104-
    protected float Luck;
104+
    public float Luck { get { return _luck; } set { _luck = value; } }
105-
    public bool isAlive => Health > 0;
105+
106-
    public float HealthWarrior { get { return Health; } }
106+
    public string WarriorClass { get { return _warriorClass; } set { _warriorClass = value; } }
107
108-
    public string NameWarrior { get { return Name; } }
108+
    public Fighter(string name, int damage, int health, int armor, int mana, float luck)
109
    {
110-
    public Fighter(string name, int damage, int health, int armor, int mana)
110+
111
        Damage = damage;
112-
        _random = new Random();
112+
113
        Armor = armor;
114
        Mana = mana;
115
        Luck = luck;
116
    }
117
118-
        Luck = _random.Next(10, 300) / 100.0f;
118+
119
    {
120
        float damageReceived = damage - _armor;
121
122
        if (damageReceived < 0)
123-
        if (damage > 0 && damage > Armor)
123+
124
            damageReceived = 0;
125-
            Health -= damage - Armor;
125+
126
        else
127
        {
128
            Health -= damageReceived / Luck;
129
        }
130
    }
131
132
    public void ShowStats(bool ViewLuck = false)
133
    {
134
        if (ViewLuck)
135
        {
136
            Console.WriteLine($"Имя: {Name} || Жизнь: {Health} || Броня: {Armor} || Мана: {Mana} || Урон: {Damage} || Удача: {Luck}");
137
        }
138
        else
139
        {
140
            Console.WriteLine($"Имя: {Name} || Жизнь: {Health} || Броня: {Armor} || Мана: {Mana} || Урон: {Damage} || Удача: ???");
141
        }
142
    }
143
    virtual public float UseSpecialAttack()
144
    {
145
        return Damage;
146
    }
147
}
148
149-
    public Necromancer(string name, int damage, int health, int armor, int mana) : base(name, damage, health, armor, mana)
149+
150
{
151
    public Necromancer(string name, int damage, int health, int armor, int mana, float luck) : base(name, damage, health, armor, mana, luck)
152
    {
153
154
    }
155
156-
        int constManaCost = 10;
156+
    public float CastClouds()
157-
        float addDamage = 1;
157+
158-
        float addLuck = 0.1f;
158+
        Luck += 0.1f;
159-
        int manaCost = (int)(constManaCost / Luck);
159+
        Damage += 1 * Luck;
160
        Console.WriteLine($"{Name} навеял тучи, урон возрос на {1 * Luck}");
161-
        if (manaCost < Mana)
161+
        Luck -= 0.1f;
162
        return Damage;
163-
            Luck += addLuck;
163+
164-
            Damage += addDamage * Luck;
164+
165-
            Mana -= manaCost;
165+
166-
            Console.WriteLine($"{Name} навеял тучи, урон возрос на {addDamage * Luck}");
166+
167-
            Luck -= addLuck;
167+
        return CastClouds();
168
    }
169
}
170
171-
            Console.WriteLine($"{Name} не хватает маны на особую атаку, и он совершил простую атаку");
171+
172
{
173
    public Knight(string name, int damage, int health, int armor, int mana, float luck) : base(name, damage, health, armor, mana, luck)
174
    {
175
176
    }
177
178
    public float Pray()
179-
    public Knight(string name, int damage, int health, int armor, int mana) : base(name, damage, health, armor, mana)
179+
180
        int manaСost = (int)(10 / Luck);
181
182
        if (manaСost < Mana)
183
        {
184
            Console.WriteLine($"{Name} Помолился: его атаки стали сильнее, а здоровье больше");
185
            Mana -= manaСost;
186-
        int constManaCost = 10;
186+
            Damage += 1;
187-
        int addDamage = 1;
187+
            Health += Health / 10;
188-
        float addHealth = 10;
188+
189-
        int manaСost = (int)(constManaCost / Luck);
189+
190
        else
191
        {
192
            Console.WriteLine($"У {Name} не хватает маны на особую атаку, и он совершил простую атаку мечом");
193
            return Damage;
194
        }
195-
            Damage += addDamage;
195+
196-
            Health += Health / addHealth;
196+
197
    override public float UseSpecialAttack()
198
    {
199
        return Pray();
200
    }
201
}
202
203
class Mag : Fighter
204
{
205
    public Mag(string name, int damage, int health, int armor, int mana, float luck) : base(name, damage, health, armor,mana, luck)
206
    {
207
208-
    public Mag(string name, int damage, int health, int armor, int mana) : base(name, damage, health, armor, mana)
208+
209
210
    public float UseSpells()
211
    {
212
        int manaСost = (int)(10 / Luck);
213
214
        if (Mana > manaСost)
215-
        int constManaCost = 10;
215+
216-
        int addArmor = 1;
216+
217-
        float FireBallDamage = 10;
217+
            Armor += (int)(1 * Luck);
218-
        int manaСost = (int)(constManaCost / Luck);
218+
            float FireBallDamage = 10;
219
            FireBallDamage = FireBallDamage * Luck;
220
            Mana -= manaСost;
221
            return FireBallDamage;
222
        }
223-
            Armor += (int)(addArmor * Luck);
223+
224
        {
225
            Console.WriteLine($"У {Name} не хватает маны на особую атаку, и он совершил простую атаку посохом");
226
            return Damage;
227
        }
228
    }
229
230
    override public float UseSpecialAttack()
231
    {
232
        return UseSpells();
233
    }
234
}