private int ChooseAttack() { string strCh; int ch; do { Console.Clear(); FighterInfoHelper.fighterSmallInfo(_fighter); messager?.Invoke("Выбор атаки:"); messager?.Invoke($"1 - Обычная атака\n2 - Использовать способность ({_fighter.Ability.Cost} маны)\n3 - Сдаться и проиграть"); strCh = Console.ReadLine(); if (int.TryParse(strCh, out ch)) { switch (ch) { case 1: return(_fighter.Attack(_enemie)); case 2: return(_fighter.SuperAbility(_enemie)); case 3: return(int.MinValue); default: break; } } } while (ch != 3); return(-1); }
/// <summary> /// Начинает бой /// </summary> /// <param name="fighterOne">Атакующий</param> /// <param name="fighterTwo">Защищающийся</param> /// <returns>Возвращает значение TRUE - если бой закончился и FALSE - если бой продолжается</returns> public static bool Fight(BaseFighter fighterOne, BaseFighter fighterTwo, int chooseAttack) { int attack = 0; attack += fighterOne.Attack(fighterTwo); attack += fighterOne.Effects(fighterTwo); fighterOne.SuperAbility(fighterTwo); if (attack > 0) { fighterTwo.Health -= attack; } else { attack = 0; } FighterInfoHelper.fightersNormalInfo(fighterOne, fighterTwo); Console.ForegroundColor = fighterOne.Color; messager($"{fighterOne.Name} нанёс {attack} урона {fighterTwo.Name}"); messager($"Оставшееся здоровье противника: {fighterTwo.Health}"); Console.ForegroundColor = ConsoleColor.White; return(fighterTwo.IsDeath()); }