/
evsyukov.s
/
DiceGame
Обзор
Документация
Войти
/
evsyukov.s
/
DiceGame
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
src/DicePoker.ConsoleApp/Program.cs
55 строк
2 KB
evsyukov.s
Декомпозиция файла Program.cs
20 дек 2025, 02:54
20 дек 2025, 02:54
56ab8a4
Код
Авторство
О чём код?
using System.Text; using DicePoker.ConsoleApp.UI; using DicePoker.Core.Data.Abstractions; using DicePoker.Core.Data.Repositories; using DicePoker.Core.Services; // Устанавливаем кодировку для правильного отображения кириллицы в консоли Console.OutputEncoding = Encoding.UTF8; // Настройка путей к директориям для хранения данных string savesDir = Path.Combine(AppContext.BaseDirectory, "data"); string recordsFilePath = Path.Combine(savesDir, "records.json"); // Dependency Injection: инициализируем репозитории и бизнес-сервисы // Репозитории работают с хранилищем (файловая система) // Сервисы реализуют бизнес-логику приложения IGameRepository gameRepository = new JsonFileGameRepository(savesDir); IRecordsRepository recordsRepository = new JsonFileRecordsRepository(recordsFilePath); GamePersistenceService gamePersistenceService = new GamePersistenceService(gameRepository); RecordsManagementService recordsService = new RecordsManagementService(recordsRepository, topCount: 10); // Инициализация UI-компонентов MenuManager menuManager = new MenuManager(recordsService); GameController gameController = new GameController(gamePersistenceService, recordsService, menuManager); // Отображаем таблицу рекордов при запуске программы await menuManager.ShowRecordsAsync(); // Главный цикл приложения - обработка выбора пользователя в главном меню while (true) { string choice = menuManager.ShowMainMenu(); switch (choice) { case "1": // Запуск новой игры с двумя игроками await gameController.StartNewGameAsync(); break; case "2": // Загрузка и продолжение сохраненной игры await gameController.LoadAndResumeAsync(); break; case "3": // Отображение таблицы лучших рекордов await menuManager.ShowRecordsAsync(); break; case "4": // Выход из приложения return; default: // Неверный выбор - продолжаем цикл continue; } }