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

IT140文本冒险游戏开发求助:房间物品显示与拾取功能问题

文本冒险游戏功能修复方案

针对你遇到的当前房间物品显示、物品拾取及房间切换后物品展示问题,以下是修复后的完整代码及关键修改说明:

修复后的代码

rooms = {
    '主洞穴': {'南': '治疗洞穴', '北': '飞行洞穴', '西': '念力洞穴', '东': '神圣洞穴'},
    '念力洞穴': {'东': '主洞穴', '物品': '念力'},
    '飞行洞穴': {'南': '主洞穴', '东': '原始洞穴', '物品': '飞行'},
    '原始洞穴': {'西': '飞行洞穴', '物品': '宝石'},
    '力量洞穴': {'南': '神圣洞穴', '物品': '力量'},
    '神圣洞穴': {'北': '力量洞穴', '西': '主洞穴', '物品': '古籍'},
    '治疗洞穴': {'北': '主洞穴', '东': '诅咒洞穴', '物品': '治疗'},
    '诅咒洞穴': {'西': '治疗洞穴', '物品': '反派'}
}

当前房间 = '主洞穴'
背包 = []

def 获取新房间(当前房间, 方向):
    # 简化房间切换逻辑,直接通过字典获取,不存在则返回原房间
    return rooms[当前房间].get(方向, 当前房间)

def 显示当前房间物品():
    # 检查当前房间是否有物品,避免无物品时报错
    if '物品' in rooms[当前房间]:
        print(f'你看到了 {rooms[当前房间]["物品"]}')
    else:
        print('这里没有任何物品')

def 显示操作指南():
    print("欢迎来到力量平衡文本冒险游戏!")
    print("")
    print("你必须获得宝石并收集4种能力,才能击败反派赢得游戏。")
    print("")
    print("移动指令:去 南/北/东/西")
    print("")
    print("拾取物品:get 物品名称/能力名称")
    print("")
    print("<< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >>")

显示操作指南()

while True:
    print(f'\n你现在在 {当前房间}')
    print(f'背包:{背包}')
    显示当前房间物品()

    输入指令 = input('\n请输入移动方向(如:去 北)、拾取指令(如:get 念力)或输入exit退出游戏:')
    输入指令 = 输入指令.strip().lower()

    if 输入指令 == 'exit':
        print('\n感谢游玩!')
        break

    # 处理移动指令
    if 输入指令.startswith('go ') or 输入指令.startswith('去 '):
        方向 = 输入指令.split()[1]
        新房间 = 获取新房间(当前房间, 方向)
        if 新房间 == 当前房间:
            print('\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
            print('\n那个方向没有洞穴,请重试!')
        else:
            当前房间 = 新房间
    # 处理拾取指令
    elif 输入指令.startswith('get '):
        目标物品 = 输入指令.split(' ', 1)[1]
        # 检查当前房间是否有该物品且未被拾取
        if '物品' in rooms[当前房间] and rooms[当前房间]['物品'] == 目标物品:
            背包.append(目标物品)
            del rooms[当前房间]['物品']
            print(f'你拾取了 {目标物品}!')
        else:
            print('这里没有这个物品,或者已经被拾取了!')
    else:
        print('\n无效指令!请输入正确的移动或拾取指令。')

关键修改说明

  • 修复无物品房间报错问题:新增显示当前房间物品()函数,先检查房间字典中是否存在物品键,避免主洞穴这类无物品房间直接访问['物品']导致KeyError。
  • 实现物品拾取功能:添加对get指令的处理逻辑,验证目标物品是否存在于当前房间,拾取后将物品加入背包并从房间中删除(避免重复拾取)。
  • 统一变量命名:将原代码中混乱的inventory/Inventory改为统一的背包,current_room改为当前房间,提升代码可读性。
  • 简化房间切换逻辑:获取新房间()函数直接使用字典的get方法,无需循环遍历,更高效简洁。
  • 优化指令输入处理:支持中文指令(如“去 北”)和英文指令(如“go north”),同时统一转为小写处理,避免大小写输入错误。
  • 修复切换房间后物品展示:每次循环都会调用显示当前房间物品(),切换房间后自动展示新房间的物品状态(已拾取的房间不会再显示物品)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:27:29