Advertisement
centner_dc

Exercise 2 v2

Aug 25th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.13 KB | None | 0 0
  1. /// Exercise 2
  2.  
  3. using System;
  4. using System.Threading;
  5.  
  6. namespace Delegates
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             int Health = 1000;
  13.             int Armor = 20;
  14.             Attack[] BossAttacks = new Attack[3]
  15.             {
  16.                 new Attack("Босс атаковал с немыслимой яростью своими руками",
  17.                             ConsoleColor.DarkRed, () => Damage(100)),
  18.                 new Attack("Босс исполнил новый альбом Ольги бузовой",
  19.                             ConsoleColor.DarkMagenta, () => Damage(140)),
  20.                 new Attack("Босс паник и рассказал вам о своём долгом пути и дал пару советов, после выпил ритуальный стопарь боярки",
  21.                             ConsoleColor.DarkGray, () => Damage(80))
  22.             };
  23.  
  24.             WriteColorLine("Босс может атаковать в двух режимах: все атаки по очереди и случайной атакой", ConsoleColor.Yellow);
  25.  
  26.             bool isRandomAttack = (DateTime.Now.Millisecond % 2) == 0;
  27.  
  28.             WriteColorLine("Босс будет атаковать: " + (isRandomAttack ? "случайно" : "все атаки по очереди"), ConsoleColor.Yellow);
  29.             WriteColorLine("Нажмите enter для начала боя", ConsoleColor.Green);
  30.             Console.ReadLine();
  31.  
  32.             int attackNumber = 0;
  33.             while (Health > 0)
  34.             {
  35.                 Console.Clear();
  36.                 WriteColorLine("У вас здоровья: " + Health, ConsoleColor.Red);
  37.  
  38.                 if (isRandomAttack)
  39.                     BossAttacks[DateTime.Now.Millisecond % 3].DoAttack();
  40.                 else
  41.                 {
  42.                     BossAttacks[attackNumber].DoAttack();
  43.                     attackNumber = ++attackNumber % 3;
  44.                 }
  45.  
  46.                 Thread.Sleep(4000);
  47.             }
  48.  
  49.             WriteColorLine("Бой закончен, вы погибли", ConsoleColor.DarkGray);
  50.  
  51.             void Damage(int dmg) => Health = Health - (dmg - Armor);
  52.         }
  53.  
  54.         public static void WriteColorLine(string text, ConsoleColor color = ConsoleColor.Yellow)
  55.         {
  56.             ConsoleColor oldColor = Console.ForegroundColor;
  57.             Console.ForegroundColor = color;
  58.             Console.WriteLine(text);
  59.             Console.ForegroundColor = oldColor;
  60.         }
  61.  
  62.         class Attack
  63.         {
  64.             private Action AttackAction = null;
  65.             private string View = string.Empty;
  66.             private ConsoleColor ViewColor = ConsoleColor.DarkRed;
  67.  
  68.             public Attack(string view, ConsoleColor color, Action action)
  69.             {
  70.                 View = view;
  71.                 ViewColor = color;
  72.                 AttackAction = action;
  73.             }
  74.  
  75.             public void DoAttack()
  76.             {
  77.                 WriteColorLine(View, ViewColor);
  78.  
  79.                 AttackAction?.Invoke();
  80.             }
  81.         }
  82.     }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement