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

Python文字游戏bug修复:避免重复拾取物品、正确触发nursery获胜条件

文字游戏修复说明

修复的问题清单

  • 解决同一房间可重复拾取物品的问题:拾取后将对应房间的物品置空,避免重复获取
  • 解决进入育儿室(nursery)直接结束游戏的问题:未集齐7件物品时可离开育儿室继续收集,只有在育儿室且集齐全部物品时才判定获胜
  • 补全get 物品名指令的处理逻辑:匹配开局给出的操作提示,取消原有的自动拾取逻辑,需玩家主动输入指令拾取物品
  • 修正原代码的物品过滤逻辑错误:原逻辑错误将房间名nursery作为物品过滤,改为过滤育儿室的特殊物品baby不参与普通拾取

修复后完整代码

rooms = {
    'playroom': {'east': 'living room'},
    'living room': {'north': 'kitchen', 'east': 'bathroom', 'south': 'library', 'west': 'nursery'},
    'kitchen': {'west': 'garage', 'east': 'pantry', 'south': 'living room'},
    'garage': {'east': 'kitchen'},
    'pantry': {'west': 'kitchen'},
    'bathroom': {'north': 'laundry room', 'west': 'living room'},
    'laundry room': {'south': 'bathroom'},
    'library': {'north': 'living room'},
    'nursery': {'east': 'living room'}
}
# 存储各房间物品,拾取后置为None避免重复获取
item = {
    'living room': 'pacifier',
    'kitchen': 'milk',
    'garage': 'diaper',
    'pantry': 'bottle',
    'bathroom': 'wipes',
    'laundry room': 'blankie',
    'library': 'book',
    'nursery': 'baby',
}

print('哄宝宝睡觉大冒险游戏')
print('收集齐7件物品即可获胜,否则就要应付脾气暴躁的宝宝哦')
print('移动指令:south(南)、east(东)、west(西)、north(北)')
print('拾取物品指令:get 物品名')
print('退出游戏指令:exit')

current_room = 'playroom'  # 初始位置为游戏室
inventory = []


def get_new_room(current, direction):
    new_room = current
    if direction in rooms[current]:
        new_room = rooms[current][direction]
    return new_room


while True:
    print('-'*30)
    print(f'你当前所在的房间:{current_room}')
    print(f'你的背包物品:{inventory}')
    # 房间有可拾取物品时提示
    if current_room in item.keys() and item[current_room] is not None and item[current_room] != 'baby':
        print(f'当前房间可拾取物品:{item[current_room]}')

    user_input = input('请输入你要执行的指令:').strip()
    if user_input == 'exit':
        print('感谢游玩,再见!')
        exit(0)
    # 处理移动指令
    elif user_input in ['south', 'north', 'east', 'west']:
        new_room = get_new_room(current_room, user_input)
        if new_room == current_room:
            print('这个方向走不通,请换其他方向。')
        else:
            current_room = new_room
    # 处理拾取指令
    elif user_input.startswith('get '):
        get_item = user_input.split(' ', 1)[1]
        if current_room in item.keys() and item[current_room] == get_item:
            inventory.append(get_item)
            item[current_room] = None
            print(f'已成功拾取【{get_item}】,放入背包')
        else:
            print('当前房间没有这个物品,请检查输入是否正确')
    else:
        print('无效指令,请按照提示输入正确的指令')

    # 进入育儿室时判定胜负
    if current_room == 'nursery':
        if len(inventory) == 7:
            print('太棒了!你集齐了所有物品,成功把宝宝哄睡了,快去享受属于自己的闲暇时间吧!')
            exit(0)
        else:
            print('你还没集齐所有需要的物品,宝宝现在情绪很不稳定,快去把剩下的物品找齐再来吧。')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:06:01