You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GameState类中current_room变量无法更新的问题求助

GameState.current_room无法更新的问题修复

核心问题分析

  1. directions字典未定义:move函数里依赖directions字典将用户输入的短方向(n/e/s/w)转换为游戏地图里的完整方向(north/east/south/west),但代码中仅定义了moves列表,缺少directions的映射关系,导致输入的方向永远无法匹配,根本执行不到更新current_room的逻辑。
  2. 房间名称不匹配:game_map中Chapel的Exits里"north"对应的是"Window room",但你定义的房间键是"Window",名称不一致,就算方向匹配成功,也会找不到对应的房间信息。
  3. 调用方式隐患:虽然Python中对象是引用传递,修改game_state.current_room本身应该生效,但如果调用move时未将返回值赋值回原变量,在部分场景下可能出现状态丢失。

修复步骤

1. 补充directions字典定义

在代码中添加方向映射:

directions = {
    "n": "north",
    "s": "south",
    "e": "east",
    "w": "west"
}

2. 修正房间名称不一致问题

把Chapel的Exits里的"Window room"改为"Window":

"Chapel": {
    "Description": " I am standing in a majestic chapel."
                   "\n             There is a coffin in front of me.",
    "Exits": {"north": "Window", "east": "Tunnel", "west": "Ballroom (Fireplace)", "south": "Stairs"},
    "Items": [],
    "Objects": ["coffin"]
},

3. 规范move函数的调用方式

调用move时,将返回值赋值回原变量(逻辑更清晰,避免潜在状态丢失):

game_state = GameState()
# 游戏循环内调用
game_state = move(game_state, game_map)

验证修复

完成上述修改后,输入方向指令(比如n),就能正确更新game_state.current_room为"Window",后续读取游戏状态时也能获取到最新的房间信息。

内容的提问来源于stack exchange,提问作者Bhanu Sugguna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 00:45:11