如果我有一个为基于文本的RPG生成项目的类,请记住这是我使用的代码的简化版本:
from random import choice, randint
class Weapon(object):
def __init__(self, name, value, damage):
self.name = name
self.value = value
self.damage = damage
class CreateWeapon(object):
def __init__(self):
self.prefix = ['rusty', 'polished', 'blessed']
self.weaponType = ['long sword', 'halberd', 'axe']
def generate(self):
weaponName = choice(self.prefix) + ' ' + choice(self.weaponType)
print weaponName
if weaponName[0] == 'r':
weaponDamage = randint(5, 20)
else:
weaponDamage = randint(20, 40)
weaponValue = randint(1, weaponDamage * 3)
return Weapon(weaponName, weaponValue, weaponDamage)
我的问题是:如何通过CreateWeapon类的generate()
方法操作我创建的Weapon对象?例如,如果我有一个具有库存属性的玩家类:
class Player(object):
def __init__(self):
self.inventory = {'weapons': []}
def addWeaponDrop(self):
createweapon = CreateWeapon()
createweapon.generate()
print 'What do?'
"""self.inventory['weapons'].append()"""
player = Player()
...我调用播放器方法addWeaponDrop()
来创建一个随机武器,如何将该武器对象添加到玩家的库存中?谢谢你的帮助。
答案 0 :(得分:3)
generate()
会返回一个Weapon实例,您可以将其附加到您的广告资源中。
weapon = createweapon.generate()
self.inventory['weapons'].append(weapon)
我必须说,但我不认为CreateWeapon应该是一个类。课程是为了事物 - 即武器本身; generate
应该是武器上的一种类方法。
答案 1 :(得分:0)
你的生成函数返回一个武器。您只需要分配它(或直接存储它)。
e.g。
var copyOfFilter = Clone((ReportFilter)filter);
或直接存储
generated_weapon = CreateWeapon.generate()
self.inventory['weapons'].append(generated_weapon)