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()); }
public void StartAtack() { do { int attack = ChooseAttack(); _enemie.Health -= attack; FighterInfoHelper.fightersNormalInfo(_fighter, _enemie); Console.ForegroundColor = _fighter.Color; messager($"{_fighter.Name} нанёс {attack} урона {_fighter.Name}"); messager($"Оставшееся здоровье противника: {_fighter.Health}"); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("Нажмите любую клавишу для продолжения..."); Console.ReadKey(); } while (_fighter.Health > 0 && _enemie.Health > 0); }
public void Start(BaseFighter fighter) { string strCh; int ch; do { Console.Clear(); messager?.Invoke($"Добро пожаловать, {fighter.Name}"); messager?.Invoke("Что будем делать ?"); messager?.Invoke("1 - Найти противника\n2 - Повысить уровень\n3 - Магазин\n4 - Информация о герое\n5 - Выход в меню"); strCh = Console.ReadLine(); if (int.TryParse(strCh, out ch)) { switch (ch) { case 1: var fm = new FightMenu(fighter); fm.StartAtack(); break; case 2: throw new MissingMethodException("Реализация в процессе"); break; case 3: throw new MissingMethodException("Реализация в процессе"); break; case 4: FighterInfoHelper.fighterFullInfo(fighter); messager?.Invoke("Для продолжения, нажмите 'Enter'..."); Console.ReadLine(); break; case 5: break; default: throw new NotSupportedException("Хакер, что ли"); break; } } } while (ch != 5); }