我目前正在试验Python并编写一个小文本冒险。在我的游戏中,玩家拥有某些属性,如HP,攻击伤害和物品库存插槽。 我希望能够在我的代码中随处调用这些属性。对于我创建的接收三个值的函数:编程一个函数,在Python中保存并返回值
“编辑”:指定如果一个变量应该被编辑
“info_id”:指定哪些变量应该被访问
“值”:为变量
这个新的值是什么样子在我的代码:
def player_info(edit, info_id, value):
if edit == 1:
##function wants to edit value
if info_id == 1:
player_hp = value
print ("Assigned hp to: ", player_hp)
##the "prints" are just to check if the asignments work -> they do
return player_hp
elif info_id == 2:
player_attack = value
print ("Assigned attack to: ", player_attack)
return player_attack
elif info_id == 3:
item_1 = value
return item_1
elif info_id == 4:
item_2 = value
return item_2
elif info_id == 5:
item_3 = value
elif edit == 0:
##function wants to retrieve value
if info_id == 1:
return player_hp
elif info_id == 2:
return player_attack
elif info_id == 3:
return item_1
elif info_id == 4:
return item_2
elif info_id == 5:
return item_3
实际上有10个插槽(上升到info_i d == 13),但无论如何它们都是一样的。
我定义所有的变量在我的代码开头:
player_info(1,1,20)
player_info(1,2,5)
n=3
while n<=13:
player_info(1,n,0)
n=n+1
##items are not fully implemented yet so I define the item slots as 0
定义的作品,我可以告诉大家,因为控制“打印”的我在代码中实现。当我调用一个变量时,例如像这样的健康:
player_info(0,1,0)
我得到一个错误:
local variable 'player_hp' referenced before assignment
是否功能不保存变量是否正确?或者是什么问题?
有没有更好的方法来保存变量?在这种情况下,全局变量是否可行?
感谢您的帮助!
请格式化您的代码。缩进是一团糟 – 2016-09-21 11:16:21
您的函数正在创建名为'player_hp'的局部变量等,它不会修改相同名称的全局变量。您可以使用'global'关键字来使该函数修改全局变量,但创建Player类会更好,并使用该类的实例来存储玩家信息。 –