From 93a4882da28b58295d6d91142e778e3afc77af7e Mon Sep 17 00:00:00 2001
From: ninemine <1371605831@qq.com>
Date: Tue, 28 Oct 2025 17:37:06 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dat=E7=94=A8=E6=88=B7=E6=A0=BC?=
=?UTF-8?q?=E5=BC=8F=E9=94=99=E8=AF=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.tasks/2025-10-28_1_gomoku.md | 11 ++++++++++
games/gomoku.py | 38 +++++++++++++++++------------------
2 files changed, 30 insertions(+), 19 deletions(-)
diff --git a/.tasks/2025-10-28_1_gomoku.md b/.tasks/2025-10-28_1_gomoku.md
index ed08a03..0de4cf5 100644
--- a/.tasks/2025-10-28_1_gomoku.md
+++ b/.tasks/2025-10-28_1_gomoku.md
@@ -204,6 +204,17 @@ if game_type == 'gomoku':
- 胜负判定
- 战绩统计
- 原因:实现用户需求的双人对战五子棋游戏
+- 阻碍因素:用户识别和显示格式错误
+- 状态:不成功
+
+## [2025-10-28 17:36:07]
+- 已修改:
+ - games/gomoku.py - 修复用户识别和显示格式
+- 更改:
+ - 修复 `_parse_opponent()` 方法,使用正确的WPS @用户格式 `` 进行解析
+ - 修改所有用户显示,从 `@用户{user_id}` 改为 ``,以正确显示用户的群名称
+ - 涉及修改:开始游戏、落子、显示棋盘、认输、列出对战等所有用户显示位置
+- 原因:修复用户识别失败和显示错误的问题
- 阻碍因素:无
- 状态:未确认
diff --git a/games/gomoku.py b/games/gomoku.py
index ad9d9a6..3541f3f 100644
--- a/games/gomoku.py
+++ b/games/gomoku.py
@@ -91,8 +91,8 @@ class GomokuGame(BaseGame):
Returns:
用户ID或None
"""
- # 查找@后的数字
- match = re.search(r'@.*?(\d+)', args)
+ # WPS格式:
+ match = re.search(r'', args)
if match:
try:
return int(match.group(1))
@@ -180,12 +180,12 @@ class GomokuGame(BaseGame):
user_game = self._find_user_game(chat_id, user_id)
if user_game:
opponent = user_game["player_white"] if user_game["player_black"] == user_id else user_game["player_black"]
- return f"⚠️ 你已经在与 @用户{opponent} 对战中!\n\n输入 `.gomoku show` 查看棋盘"
+ return f"⚠️ 你已经在与 对战中!\n\n输入 `.gomoku show` 查看棋盘"
opponent_game = self._find_user_game(chat_id, opponent_id)
if opponent_game:
other = opponent_game["player_white"] if opponent_game["player_black"] == opponent_id else opponent_game["player_black"]
- return f"⚠️ 对手已经在与 @用户{other} 对战中!"
+ return f"⚠️ 对手已经在与 对战中!"
# 创建新游戏
current_time = int(time.time())
@@ -210,9 +210,9 @@ class GomokuGame(BaseGame):
self._save_game_pool(chat_id, pool)
text = f"## ⚫ 五子棋对战开始!\n\n"
- text += f"**黑方(先手)**:@用户{user_id} ⚫\n\n"
- text += f"**白方(后手)**:@用户{opponent_id} ⚪\n\n"
- text += f"**轮到**:@用户{user_id} ⚫\n\n"
+ text += f"**黑方(先手)**: ⚫\n\n"
+ text += f"**白方(后手)**: ⚪\n\n"
+ text += f"**轮到**: ⚫\n\n"
text += "💡 提示:\n"
text += "- 黑方有禁手规则(三三、四四、长连禁手)\n"
text += "- 输入 `.gomoku A1` 在A1位置落子\n"
@@ -239,7 +239,7 @@ class GomokuGame(BaseGame):
# 检查是否轮到该用户
if game["current_player"] != user_id:
opponent_id = game["player_white"] if game["player_black"] == user_id else game["player_black"]
- return f"⚠️ 现在轮到 @用户{opponent_id} 落子"
+ return f"⚠️ 现在轮到 落子"
# 解析坐标
position = logic.parse_coord(coord)
@@ -263,7 +263,7 @@ class GomokuGame(BaseGame):
if is_forbidden:
text = f"## ❌ {forbidden_type}!\n\n"
text += f"位置 {coord.upper()} 触发禁手,黑方判负!\n\n"
- text += f"**获胜者**:@用户{game['player_white']} ⚪ 白方\n\n"
+ text += f"**获胜者**: ⚪ 白方\n\n"
text += f"📊 战绩已更新"
# 更新战绩
@@ -286,7 +286,7 @@ class GomokuGame(BaseGame):
# 检查是否获胜
if logic.check_win(game["board"], row, col, player):
text = f"## 🎉 五连珠!游戏结束!\n\n"
- text += f"**获胜者**:@用户{user_id} {player_emoji} {player_name}\n\n"
+ text += f"**获胜者**: {player_emoji} {player_name}\n\n"
# 渲染棋盘
board_str = logic.render_board(game["board"], game["last_move"])
@@ -325,7 +325,7 @@ class GomokuGame(BaseGame):
text = f"## ✅ 落子成功!\n\n"
text += f"**位置**:{coord.upper()} {player_emoji}\n\n"
- text += f"**轮到**:@用户{opponent_id} {opponent_emoji} {opponent_name}\n\n"
+ text += f"**轮到**: {opponent_emoji} {opponent_name}\n\n"
text += f"```\n{board_str}\n```"
return text
@@ -353,9 +353,9 @@ class GomokuGame(BaseGame):
current_name = "黑方" if game["player_black"] == current_id else "白方"
text = f"## ⚫ 五子棋对战\n\n"
- text += f"**黑方**:@用户{game['player_black']} ⚫\n\n"
- text += f"**白方**:@用户{game['player_white']} ⚪\n\n"
- text += f"**轮到**:@用户{current_id} {current_emoji} {current_name}\n\n"
+ text += f"**黑方**: ⚫\n\n"
+ text += f"**白方**: ⚪\n\n"
+ text += f"**轮到**: {current_emoji} {current_name}\n\n"
text += f"**手数**:{len(game['moves'])}\n\n"
text += f"```\n{board_str}\n```"
@@ -386,8 +386,8 @@ class GomokuGame(BaseGame):
winner_emoji = "⚫"
text = f"## 🏳️ 认输\n\n"
- text += f"@用户{user_id} {loser_name} 认输\n\n"
- text += f"**获胜者**:@用户{winner_id} {winner_emoji}\n\n"
+ text += f" {loser_name} 认输\n\n"
+ text += f"**获胜者**: {winner_emoji}\n\n"
text += f"📊 战绩已更新"
# 更新战绩
@@ -421,9 +421,9 @@ class GomokuGame(BaseGame):
for idx, game in enumerate(active_games, 1):
current_emoji = "⚫" if game["player_black"] == game["current_player"] else "⚪"
text += f"### {idx}. 对战\n"
- text += f"- **黑方**:@用户{game['player_black']} ⚫\n"
- text += f"- **白方**:@用户{game['player_white']} ⚪\n"
- text += f"- **轮到**:@用户{game['current_player']} {current_emoji}\n"
+ text += f"- **黑方**: ⚫\n"
+ text += f"- **白方**: ⚪\n"
+ text += f"- **轮到**: {current_emoji}\n"
text += f"- **手数**:{len(game['moves'])}\n\n"
return text