/
dsska
/
lichnoe
Обзор
Документация
Войти
/
dsska
/
lichnoe
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Army/Program.cs
125 строк
3 KB
dsska
upload files
02 мар 2026, 00:41
Верифицирован
02 мар 2026, 00:41
0efefd0
Код
Авторство
О чём код?
using Core.Services; using Core.Interfaces; using Core.Domain; using Core.Models; Random random = new Random(); IGamePersistence persistence = new JsonGamePersistence(); Console.WriteLine("1 - Новая игра"); Console.WriteLine("2 - Загрузить игру"); int mainChoice = int.Parse(Console.ReadLine() ?? "1"); Army army1; Army army2; if (mainChoice == 2 && File.Exists("save.json")) { var state = persistence.Load("save.json"); army1 = ConvertFromState(state.Army1); army2 = ConvertFromState(state.Army2); Console.WriteLine("Игра загружена!"); } else { Console.WriteLine("Выберите режим создания армии:"); Console.WriteLine("1 - Рандомная армия"); Console.WriteLine("2 - Создать армию вручную"); int mode = int.Parse(Console.ReadLine() ?? "1"); Console.WriteLine("Выберите способ задания бюджета:"); Console.WriteLine("1 - Ввести бюджет вручную"); Console.WriteLine("2 - Сгенерировать бюджет случайно"); int budgetMode = int.Parse(Console.ReadLine() ?? "1"); int budget1; int budget2; if (budgetMode == 1) { Console.WriteLine("Введите бюджет для Army1:"); budget1 = int.Parse(Console.ReadLine() ?? "100"); Console.WriteLine("Введите бюджет для Army2:"); budget2 = int.Parse(Console.ReadLine() ?? "100"); } else { budget1 = random.Next(100, 251); budget2 = random.Next(100, 251); Console.WriteLine($"Сгенерирован бюджет Army1: {budget1}"); Console.WriteLine($"Сгенерирован бюджет Army2: {budget2}"); } IArmyFactory factory = mode == 1 ? new RandomArmyFactory() : new ManualArmyFactory(); army1 = factory.CreateArmy(budget1); army2 = factory.CreateArmy(budget2); } var game = new Game(army1, army2); game.PlayToEnd(); // Сохранение после игры var saveState = ConvertToState(army1, army2); persistence.Save(saveState, "save.json"); Console.WriteLine("Игра сохранена в save.json"); /* ======================= Методы преобразования ======================= */ static GameState ConvertToState(Army army1, Army army2) { return new GameState { Army1 = ConvertArmy(army1), Army2 = ConvertArmy(army2) }; } static ArmyState ConvertArmy(Army army) { return new ArmyState { Budget = army.Budget, Units = army.Units.Select(u => new UnitState { Type = u.GetType().Name, Attack = u.Attack, Defence = u.Defence, Health = u.Health }).ToList() }; } static Army ConvertFromState(ArmyState state) { var units = new List<Unit>(); foreach (var unitState in state.Units) { Unit unit = unitState.Type switch { "HeavyInfantry" => new HeavyInfantry(), "LightInfantry" => new LightInfantry(), "Archer" => new Archer(), _ => throw new Exception("Неизвестный тип юнита") }; units.Add(unit); } return new Army(units, state.Budget); }