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 | } |