战斗机器人。我的第一个小程序。 Python语言

时间:2016-11-28 21:38:34

标签: python

我设置了一些像表格一样的词典,例如:

SpdPts0 = {'Init Bonus':0,'Dodge Bonus':0,'Crit %':0,'Finness Bonus':0}
SpdPts1 = {'Init Bonus':2,'Dodge Bonus':5,'Crit %':0,'Finness Bonus':0}
SpdPts2 = {'Init Bonus':4,'Dodge Bonus':5,'Crit %':0,'Finness Bonus':0}

DefPts0 = {'Block':0,'Dodge':0,'Absorb':0,'Deflect':0,'MaxDefProgs':0}
DefPts1 = {'Block':5,'Dodge':5,'Absorb':0,'Deflect':0,'MaxDefProgs':0}
DefPts2 = {'Block':10,'Dodge':10,'Absorb':0,'Deflect':0,'MaxDefProgs':1}

我有一个这样的课程,例如:

class Robot:
    def __init_(self,name):
        self.name =  name
        self.Dodge = 0
        self.PtsSpeed = 2
        self.PtsDefence = 2

当机器人获得要由用户分发的点数时,(.PtsSpeed,.PtsDefence)将会增加功能。

如何更新class属性" self.Dodge"通过引用.PtsSpeed和.PtsDefence从上面的变量求和(' Dodge'和#39; Dodge Bonus')键? 或者请告诉我一种更容易的方式。

1 个答案:

答案 0 :(得分:0)

class Robot:
    def __init__(self,name,rob_type=None):
        self.name =  name
        self.PtsSpeed = 2
        self.PtsDefence = 2
        self.Dodge = self.dodge_cal(rob_type)

    def dodge_cal(self, value=None):
        if value:
            return value['Dodge']
        else:
            return self.PtsSpeed + self.PtsDefence

SpdPts0 = {'Init Bonus':0,'Dodge Bonus':0,'Crit %':0,'Finness Bonus':0}
SpdPts1 = {'Init Bonus':2,'Dodge Bonus':5,'Crit %':0,'Finness Bonus':0}
SpdPts2 = {'Init Bonus':4,'Dodge Bonus':5,'Crit %':0,'Finness Bonus':0}

DefPts0 = {'Block':0,'Dodge':0,'Absorb':0,'Deflect':0,'MaxDefProgs':0}
DefPts1 = {'Block':5,'Dodge':5,'Absorb':0,'Deflect':0,'MaxDefProgs':0}
DefPts2 = {'Block':10,'Dodge':10,'Absorb':0,'Deflect':0,'MaxDefProgs':1}

bob = Robot('bob',DefPts2)

print(bob.Dodge) #10

foo = Robot('foo')
print(foo.Dodge) #4

创建一个根据传入的内容计算它的函数。这是一种方法。有很多方法可以做到这一点。如果未传递rob_type,则默认情况下通过添加对象的PtsSpeed + PtsDefence来计算它。 rob_type接收完整字典并确保其具有正确的密钥'Dodge'。然后,您可以通过制作小函数来计算更多的统计数据,因为您接受字典并将其存储在rob_type中,所以您想要做什么并不重要。

我会将您的SpdPts与您的DefPts结合起来,或者将它们结合起来,但这又是超级广泛的,这取决于您希望如何实施。祝你好运。