我第一次玩Python和任何编程语言,所以请耐心等待。两周前我开始上网,但尝试在旁边开发一个小游戏,以便更快地学习(并且玩得开心)。这是一次文本冒险,但是随机遭遇并与敌人进行战斗,这些敌人拥有玩家随后可以抢劫的随机装备。
这是我的问题:如果我为随机遭遇创建随机对象/武器,我需要确保该对象具有唯一名称。设计关卡的方式理论上可以是无数个对象(它可以是开放式的,遇到的只是弹出)。
到目前为止,这是我的方法
class Item_NPCs: #create objects for NPCs
def__init__(self, item_type, item_number):
# e.g. item_type 1 = weapons, item_type2 = potions, etc.
if item_type == 1 and item number == 1:
self.property1 = 5
self.property2 = 4
if item_type == 1 and item_number ==2:
# etc. :)
def prepare_encounter():
inventory_NPC = [] # empty list for stuff the NPC carries around
XXX = Class_Item(item_type, item_number) # I might randomize the arguments.
重要的是我想要" XXX"具有独特性和随机性,因此不会有任何对象存在多次,以后可以放入播放器的库存中。
怎么做?
乔
答案 0 :(得分:3)
为什么你需要它是随机的?您可以简单地使用一个列表,并将每个新对象附加到列表中,其索引是其唯一标识符:
items = []
items.append( Class_Item(item_type, item_number) )
但如果你真的需要随机标识符,也许你可以使用字典:
items = dict()
items[random_id] = Class_Item(item_type, item_number)
这要求random_id可以清除(但如果是数字或字符串则应该是这样)。
答案 1 :(得分:0)
我不知道为什么其他人没有想到这一点:
yourvariableName = randint(0,1000)
exec("var_%s = 'value'" % yourVariableName)
我自己想到了。希望对您有帮助。
缺点是您不能仅仅这样做:
print(var_yourVariableName)
您只能这样做:
exec("print(var_%s)" % yourVariableName)
但是您可能可以以一种或另一种方式规避。如果您想找出答案,请发表评论。
另一个缺点-如果以某些方式使用,可能会很不安全(因为我们使用的是exec
),因此请确保掩盖所有漏洞!