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