static void Main(string[] args) { Tank ourTank = new Tank(5, 300, 20); SimpleComputerTank enemyTank = new SimpleComputerTank(10, 250, 10); bool isEnd = false; bool IsParsed = false; Actions ourAction = Actions.Shoot; Actions enmAction = Actions.Shoot; ShootResult shootResult; while (!isEnd) { Console.WriteLine("Новый ход!"); Console.WriteLine($"Наш танк. Жизни: {ourTank.Health} Количество патронов: {ourTank.RoundsNum}"); Console.WriteLine($"Танк противника. Жизни: {enemyTank.Health} Количество патронов: {enemyTank.RoundsNum}"); Console.WriteLine("Доступные действия: \n" + " 1. Выстрел\n" + " 2. Ремонт\n" + " 3. Покупка патронов\n" + "Введите число, соотвествующее желаемому действию:"); // Считывание действия пользователя с проверкой правильности ввода. string ioAction; do { ioAction = Console.ReadLine(); IsParsed = Enum.TryParse(ioAction, out ourAction); if (!IsParsed || (int)ourAction < 1 || (int)ourAction > 3) { Console.WriteLine("Введите допустимое число"); IsParsed = false; } }while (!IsParsed); Console.WriteLine(); // Наш ход. switch (ourAction) { case Actions.Shoot: Console.WriteLine("Наш танк стреляет!"); shootResult = ourTank.Shoot(enemyTank); switch (shootResult) { case ShootResult.Usual: Console.WriteLine("Противнику нанесён стандартный урон."); break; case ShootResult.Critical: Console.WriteLine("Критическое попадание! Танк нанёс на 20% больше урона."); break; case ShootResult.Miss: Console.WriteLine("Промах..."); break; case ShootResult.NoRounds: Console.WriteLine("Выстрелить не удалось. Купите патроны!"); break; } break; case Actions.Repair: ourTank.Repair(); Console.WriteLine("Наш танк починился!"); break; case Actions.Buy: ourTank.BuyRounds(); Console.WriteLine("Наш танк купил патроны!"); break; } // Наша победа. if (enemyTank.Health <= 0) { Console.WriteLine("Победа! Вражеский танк уничтожен!"); isEnd = true; } else { Console.WriteLine(); // Генерация действия противника. enmAction = enemyTank.ComputerTurn(ourTank); // Ход противника. switch (enmAction) { case Actions.Shoot: Console.WriteLine("Противник стреляет!"); shootResult = enemyTank.Shoot(ourTank); switch (shootResult) { case ShootResult.Usual: Console.WriteLine("Нам нанесён стандартный урон."); break; case ShootResult.Critical: Console.WriteLine("Критическое попадание! Противник нанёс на 20% больше урона."); break; case ShootResult.Miss: Console.WriteLine("Противник промахнулся..."); break; case ShootResult.NoRounds: Console.WriteLine("Противник не смог выстрелить, так как у него нет патронов."); break; } break; case Actions.Repair: enemyTank.Repair(); Console.WriteLine("Танк врага починился!"); break; case Actions.Buy: enemyTank.BuyRounds(); Console.WriteLine("Танк врага купил патроны!"); break; } // Победа противника. if (ourTank.Health <= 0) { Console.WriteLine("Поражение! Наш танк уничтожен!"); isEnd = true; } } // Отступ перед новым ходом. Console.WriteLine("\n"); } Console.WriteLine("Нажмите Enter, чтобы завершить работу программы..."); Console.ReadLine(); }