在文字游戏中无法遇到“恶棍”

问题描述 投票:0回答:1

极度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

它只是表现得就像我进入了另一个房间,显示我的库存,并询问我的下一步行动

python loops text-based adventure
1个回答
0
投票

在这个问题上坚持了三天,最后在这里发帖,我继续搞乱它,终于让它工作了!距离我最初发布此文仅一个小时。

对于库存问题,我事先添加了另一个 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('-------------------')
创建了一个函数,使主函数看起来更干净。

感谢您的帮助!

© www.soinside.com 2019 - 2024. All rights reserved.