2016-09-22 29 views
1

我工作的一个基于文本的RPG游戏,而我试图创造魔法咒语影响统计信息,如群攻,转顺序等我使用各种类格式的法术:Python:我如何创建适用于类中变量的效果?

class BuffSpell(object): 
    def __init__(self, **kwargs): 
     self.__dict__.update(kwargs) 

,我从一本字典调用法术

bardSpells = { 
    1: BuffSpell(name= "Flare", level= 0, stat= baseAttack, value -1) 
} 

我怎么会用喇叭上的敌人,如妖精?我试图使使用的goblinBuffSpell[1]参数的方法

def useBuffSpell(target, spell): 
    target.spell.stat = target.spell.stat + spell.value 

此外,通过咒语影响战斗序列中的下一个回合动作的好方法是什么?

回答

0

使用getattrsetattr,并在属性引用的拼写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]),将由1降低goblin小号baseAttack,或者将其设置为-1如果没有一个baseAttack它。

相关问题