Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// Exercise 2
- using System;
- using System.Threading;
- namespace Delegates
- {
- class Program
- {
- static void Main(string[] args)
- {
- int Health = 1000;
- int Armor = 20;
- Attack[] BossAttacks = new Attack[3]
- {
- new Attack("Босс атаковал с немыслимой яростью своими руками",
- ConsoleColor.DarkRed, () => Damage(100)),
- new Attack("Босс исполнил новый альбом Ольги бузовой",
- ConsoleColor.DarkMagenta, () => Damage(140)),
- new Attack("Босс паник и рассказал вам о своём долгом пути и дал пару советов, после выпил ритуальный стопарь боярки",
- ConsoleColor.DarkGray, () => Damage(80))
- };
- WriteColorLine("Босс может атаковать в двух режимах: все атаки по очереди и случайной атакой", ConsoleColor.Yellow);
- bool isRandomAttack = (DateTime.Now.Millisecond % 2) == 0;
- WriteColorLine("Босс будет атаковать: " + (isRandomAttack ? "случайно" : "все атаки по очереди"), ConsoleColor.Yellow);
- WriteColorLine("Нажмите enter для начала боя", ConsoleColor.Green);
- Console.ReadLine();
- int attackNumber = 0;
- while (Health > 0)
- {
- Console.Clear();
- WriteColorLine("У вас здоровья: " + Health, ConsoleColor.Red);
- if (isRandomAttack)
- BossAttacks[DateTime.Now.Millisecond % 3].DoAttack();
- else
- {
- BossAttacks[attackNumber].DoAttack();
- attackNumber = ++attackNumber % 3;
- }
- Thread.Sleep(4000);
- }
- WriteColorLine("Бой закончен, вы погибли", ConsoleColor.DarkGray);
- void Damage(int dmg) => Health = Health - (dmg - Armor);
- }
- public static void WriteColorLine(string text, ConsoleColor color = ConsoleColor.Yellow)
- {
- ConsoleColor oldColor = Console.ForegroundColor;
- Console.ForegroundColor = color;
- Console.WriteLine(text);
- Console.ForegroundColor = oldColor;
- }
- class Attack
- {
- private Action AttackAction = null;
- private string View = string.Empty;
- private ConsoleColor ViewColor = ConsoleColor.DarkRed;
- public Attack(string view, ConsoleColor color, Action action)
- {
- View = view;
- ViewColor = color;
- AttackAction = action;
- }
- public void DoAttack()
- {
- WriteColorLine(View, ViewColor);
- AttackAction?.Invoke();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement