Python地牢收集游戏中elif语句无法触发的问题排查
问题原因
你代码里的条件判断顺序搞反了。当玩家收集齐所有物品后,第一个if条件会先触发,执行打印提示后就跳过了后面所有的elif判断——哪怕此时玩家已经进入your office房间,第三个elif也没机会执行。
修复方案
调整条件判断的优先级,先检查玩家是否在your office房间,再根据物品收集情况分支,最后处理“收集全物品但还没去office”的提示。
修改后的循环内条件判断部分代码:
while True: # sort inventory. sorted_inv = sorted(inventory) # display instructions. instructions() # 先判断是否在目标房间 if current_room == 'your office': if sorted_inv == ['blasting rod', 'enchanted duster', 'energy potion', 'shield bracelet', 'skull', 'wizard staff']: print('The Faerie Queen has terrorized your city for the last time.') break else: print('You were unprepared. The Queen tears you head off. Game over.') break # 再判断是否收集全物品(此时不在office) elif sorted_inv == ['blasting rod', 'enchanted duster', 'energy potion', 'shield bracelet', 'skull', 'wizard staff']: print('\nYou\'ve got your stuff back. Time to see the Queen.')
额外优化建议
- 把目标物品列表存成一个变量,比如
required_items = sorted(['blasting rod', 'enchanted duster', 'energy potion', 'shield bracelet', 'skull', 'wizard staff']),之后直接用sorted_inv == required_items,避免重复写长列表,也不容易出错。 - 检查
your office房间的物品Faerie Queen是否需要加入收集列表?目前你的胜利条件里没包含它,要是这是最终关键物品,记得调整required_items。
内容的提问来源于stack exchange,提问作者zeroMana
相关产品推荐
相关产品推荐

