我正在制作一个基于文本的角色扮演游戏,我正在尝试创建影响基础攻击,转弯等等统计数据的魔法法术。我正在使用各种类型的法术格式:
class BuffSpell(object):
def __init__(self, **kwargs):
self.__dict__.update(kwargs)
我正在从字典中调用法术
bardSpells = {
1: BuffSpell(name= "Flare", level= 0, stat= baseAttack, value -1)
}
我如何在像妖精这样的敌人身上使用耀斑?我尝试制作方法
def useBuffSpell(target, spell):
target.spell.stat = target.spell.stat + spell.value
使用goblin
和BuffSpell[1]
的参数。
此外,通过法术影响战斗序列中下一回合动作的好方法是什么?
答案 0 :(得分:0)
使用getattr
和setattr
,并使法术中的属性引用成为str
:
bardSpells = {
1: BuffSpell(name= "Flare", level= 0, stat="baseAttack", value -1)
}
def useBuffSpell(target, spell):
setattr(target, spell.stat,
getattr(target, spell.stat, 0) + spell.value)
setattr
是一个内置函数,给定一个对象,一个属性的名称和一个值,将该对象的属性设置为该值。
getattr
是一个内置函数,给定一个对象,一个属性的名称,以及可选的默认值(在上例中为0
),返回该对象的属性,如果该对象具有默认值,则返回默认值没有该名称的属性。如果没有给出默认值,则不存在的属性访问会引发AttributeError
。
上述示例(如果您执行useBuffSpell(goblin, bardSpells[1])
)会将goblin
s baseAttack
减少1,或者如果它没有-1
则将其设置为baseAttack
1}}。