极度Python新手,目前正在学习Python课程。尝试做一款冒险文字游戏。我已经正确地获得了指示并检索了物品部分,但我的 if in inventory 没有运行并且仍然添加了物品,当我进入那个房间时,我似乎无法遇到我的“恶棍”。
这就是我要抢的东西:
if 'item' in inventory:
print('You already have the ', rooms[current_room]['item'])
player_move = input('Enter your move: ')
action = player_move.title().split()
print('-------------------')
elif action[1] == rooms[current_room]['item'] and 'item' not in inventory:
inventory.append(action[1])
print(rooms[current_room]['item'], 'retrieved')
player_move = input('Enter your move: ')
action = player_move.title().split()
print('-------------------')
我目前为恶棍准备了这个,但它永远不会触发
if 'Villain' in rooms[current_room].keys():
if len(inventory) < 6:
print("You got caught before you could complete your mission! :(")
break
else:
print("You successfully infiltrated the company!")
break
它只是表现得就像我进入了另一个房间,显示我的库存,并询问我的下一步行动
在这个问题上坚持了三天,最后在这里发帖,我继续搞乱它,终于让它工作了!距离我最初发布此文仅一个小时。
对于库存问题,我事先添加了另一个 if 语句来检查该物品是否在房间中,然后为该物品分配了一个变量来检查它是否在库存中。这是我使用的最终代码:
#If item is already in player's inventory do not add again and let them know
if 'item' in rooms[current_room].keys():
nearby_item = rooms[current_room]['item']
if nearby_item in inventory:
print('You already have a', rooms[current_room]['item'])
line_break()
#If item not in inventory append to inventory list
elif action[1] == rooms[current_room]['item'] and 'item' not in inventory:
inventory.append(action[1])
#confirm item is retrieved
print(rooms[current_room]['item'], 'retrieved')
line_break()
对于我的恶棍交互,我必须将恶棍交互移至循环的开头 - 我最初将其放在循环开始之前的外面。
为了澄清起见,我弄清楚了在哪里添加
player_move = input('Enter your move: ').title()
action = player_move.split()
这样我就不用一直重复了。并将 .title 切换到输入,因为它没有捕获我的退出子句。然后我为我的
print('-------------------')
创建了一个函数,使主函数看起来更干净。
感谢您的帮助!