From 15bf6d0531a73e18123c808b340c9eb0cc286b29 Mon Sep 17 00:00:00 2001 From: Azure <983547216@qq.com> Date: Tue, 23 Jun 2026 11:28:27 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BB=A3=E7=A0=81=E5=AE=A1=E6=9F=A5?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D=20=E2=80=94=20rebuildBoard?= =?UTF-8?q?=20=E5=8F=82=E6=95=B0=E4=BF=AE=E6=AD=A3=20+=20=E7=8E=A9?= =?UTF-8?q?=E5=AE=B6=E5=BA=A7=E4=BD=8D=E5=8F=B7=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../webgamebackend/service/impl/GameServiceImpl.java | 2 +- .../webgamebackend/service/impl/GomokuGameServiceImpl.java | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) 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)) {