Python 3.x 如何在列表中追加项,以便稍后在If语句中使用

Python 3.x 如何在列表中追加项,以便稍后在If语句中使用,python-3.x,if-statement,pygame,append,Python 3.x,If Statement,Pygame,Append,我正在创建一个基于文本的游戏,当我试图添加一把刀以传递到森林时,我遇到了一个问题。我的想法是,玩家需要使用'C'选项将刀添加到库存中。然后使用刀在'B'选项中传递到森林。有什么解决办法吗 a1=input('你想做什么?\n检查你周围的一些岩石(A)\n去森林(B)\n看看岛上的海滩周围(C)\n\n') obj=[] def addknife(): 对象附加(‘刀’) 如果a1.capitalize()==“A”: 打印() 打印(“它只是一块石头。”) elif a1.capitalize(

我正在创建一个基于文本的游戏,当我试图添加一把刀以传递到森林时,我遇到了一个问题。我的想法是,玩家需要使用
'C'
选项将
刀添加到库存中。然后使用
'B'
选项中传递到森林。有什么解决办法吗

a1=input('你想做什么?\n检查你周围的一些岩石(A)\n去森林(B)\n看看岛上的海滩周围(C)\n\n')
obj=[]
def addknife():
对象附加(‘刀’)
如果a1.capitalize()==“A”:
打印()
打印(“它只是一块石头。”)
elif a1.capitalize()=“C”:
打印()
print('朝海滩走去时,你遇到了一把刀')
addknife()
打印(obj)
elif a1.capitalize()=“B”:
如果obj中有“刀”:
打印('你可以去森林')
其他:
打印('植物不允许你通过')

一个简单的方法是创建一个数据结构来保存所有游戏位置,然后维护一个玩家位置,这是该结构的某种索引。我试图让这个答案非常简单,所以我省略了更复杂的细节,这可能会使它更有效

也许从一个位置列表开始,然后在该列表中添加一个整数索引:

#             index 0                   index 1         index 2               index 3
locations = [ "Rocky End of The Beach", "On The Beach", "Edge of The Forest", "In The Forest" ]
player_location = 0
因此,在开始时,可以向玩家显示
位置[player_location]
,这将是“海滩的岩石尽头”

类似于
位置
,可能在每个位置都有一个对象列表:

objects = [ [ ], [ "Knife" ], [ "Coconut", "Banana" ], [ ] ]
显然,我们有一个列表列表,因此如果
player\u位置
2
,可用对象将是
[“椰子”,“香蕉”]

因此,要向玩家显示位置的描述,它现在是位置和对象的组合:

def showLocation( player_location ):
    global locations, objects
    # show the location description
    print( locations[ player_location ], end='. ' )
    # show the location's objects
    if ( len( objects[ player_location ] ) > 0 ):
        print( "There is: " )
        for item in objects[ player_location ]:
            print( item, end=", " )
    print("") # end-of-line
因此,在“海滩”位置(
player_location
1
),此位置文本将变为:

在海滩上。有一把刀

另一个出口列表可以控制玩家从当前位置移动的方式,另一个列表可以指示需要哪个“钥匙”。因此,如果玩家在位置
0
,他们可以移动到
1
=海滩,
2
=森林边缘。如果玩家“在海滩上”,他们只能移回索引=0(岩石端),以此类推

指示玩家在进入该位置前需要拥有哪些物品。因此,对于前3个位置,不需要对象。但要进入森林(只能从“森林边缘”进入),玩家需要有“刀”

像这样的简单列表系统可以定义一组关于您的位置的规则。然后同样的代码可以循环询问玩家命令。将命令与位置进行比较。例如,只有当
对象
列表在特定的
玩家位置
索引中有一个“香蕉”项时,“获取香蕉”才有效

从一组简单的规则数据开始,甚至可能只是位置名称,然后继续向其中添加越来越多的功能

编写一些伪代码:

# Do Forever:
#     Show player the location description
#     Get input from player
#     if a movement command
#         if player has key-object to move, or no object needed
#             change the `player_location` index
#         else
#             Show "You need object XXX" to player
#     if a get/drop command and item valid
#         change the player & location objects list   

我不清楚你的具体问题是什么,我猜你需要某种循环逻辑来迫使玩家留在那个区域,直到他们探索找到刀,对吗?是的,对不起我解释得不好,英语不是我的母语呵呵。是这样吗,我需要那个玩家呆在这个区域,直到他拿到刀,然后用它穿越森林,继续这个故事。非常感谢!阿根廷已经很晚了,所以明天我要试试这个。我是新手,你的解决方案真的帮助我提高了!很高兴我能帮忙。当我第一次开始编程时,我写了文本冒险:D
# Do Forever:
#     Show player the location description
#     Get input from player
#     if a movement command
#         if player has key-object to move, or no object needed
#             change the `player_location` index
#         else
#             Show "You need object XXX" to player
#     if a get/drop command and item valid
#         change the player & location objects list