/
java56
/
Minesweeper
Обзор
Документация
Войти
/
java56
/
Minesweeper
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/main/java/com/mikhail/minesweeper/service/GameService.java
67 строк
2 KB
Mikhail Gorbatenkov
45 - edited the game service
19 фев 2025, 15:04
19 фев 2025, 15:04
5bf04d6
Код
Авторство
О чём код?
package com.mikhail.minesweeper.service; import com.mikhail.minesweeper.dto.request.GameTurnRequest; import com.mikhail.minesweeper.dto.request.NewGameRequest; import com.mikhail.minesweeper.dto.response.GameInfoResponse; import com.mikhail.minesweeper.mapper.GameMapper; import com.mikhail.minesweeper.model.Game; import com.mikhail.minesweeper.model.GameStatus; import com.mikhail.minesweeper.storage.InMemoryGameStorage; import org.springframework.stereotype.Service; /** * @author Mikhail * <p>Сервис, отвечающий за управление игрой.</p> */ @Service public class GameService { private final GameFieldService gameFieldService; private final GameValidationService gameValidationService; private final GameMapper gameMapper; public GameService(GameFieldService gameFieldService, GameValidationService gameValidationService, GameMapper gameMapper) { this.gameFieldService = gameFieldService; this.gameValidationService = gameValidationService; this.gameMapper = gameMapper; } /** * Создание новой игры * * @param request объект, содержащий информацию об игре * @return объект с информацией о созданной игре */ public GameInfoResponse createGame(NewGameRequest request) { gameValidationService.validateNewGame(request.getWidth(), request.getHeight(), request.getMinesCount()); Game game = new Game(request.getWidth(), request.getHeight(), request.getMinesCount()); game.setField(gameFieldService.generateGameField(game)); InMemoryGameStorage.addGame(game); return gameMapper.toGameInfoResponse(game); } /** * Выполнение хода * * @param request объект, содержащий информацию о ходе игрока * @return объект с информацией о состоянии игры */ public GameInfoResponse makeMove(GameTurnRequest request) { Game game = InMemoryGameStorage.getGame(request.getGameId()); // Валидация хода gameValidationService.validateMove(game, request); // Обработка хода gameFieldService.openCell(game, request.getRow(), request.getCol()); if (gameValidationService.isGameCompleted(game)) { game.setStatus(GameStatus.COMPLETED); } return gameMapper.toGameInfoResponse(game); } }