diff --git a/src/main/java/com/webgame/webgamebackend/service/impl/GameServiceImpl.java b/src/main/java/com/webgame/webgamebackend/service/impl/GameServiceImpl.java index cbfb93a..ae580b8 100644 --- a/src/main/java/com/webgame/webgamebackend/service/impl/GameServiceImpl.java +++ b/src/main/java/com/webgame/webgamebackend/service/impl/GameServiceImpl.java @@ -471,7 +471,7 @@ public class GameServiceImpl implements GameService { .toList(); // 从走棋记录重建棋盘 - boardState = GomokuGameService.rebuildBoard(moveEntities, room.getMaxPlayers()); + boardState = GomokuGameService.rebuildBoard(moveEntities, GomokuGameService.BOARD_SIZE); // currentTurn 由服务端运行时管理,HTTP 快照中暂不返回 } diff --git a/src/main/java/com/webgame/webgamebackend/service/impl/GomokuGameServiceImpl.java b/src/main/java/com/webgame/webgamebackend/service/impl/GomokuGameServiceImpl.java index eeaea7a..080b227 100644 --- a/src/main/java/com/webgame/webgamebackend/service/impl/GomokuGameServiceImpl.java +++ b/src/main/java/com/webgame/webgamebackend/service/impl/GomokuGameServiceImpl.java @@ -60,7 +60,11 @@ public class GomokuGameServiceImpl implements GomokuGameService { int moveCount = moves.size(); // 判定当前玩家应该下哪一方(黑先白后) - List players = roomPlayerRepository.findByRoomId(roomId); + // 按座位号排序,确保黑方/白方分配与座位对应(seat=1 为黑方先手) + List players = roomPlayerRepository.findByRoomId(roomId) + .stream() + .sorted(java.util.Comparator.comparingInt(RoomPlayerEntity::getSeatNumber)) + .toList(); int playerIndex = -1; for (int i = 0; i < players.size(); i++) { if (players.get(i).getUserId().equals(userId)) {