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
相关产品推荐
相关产品推荐

