0

我正在使用 Python atm 并尝试制作一些游戏类型的东西。到目前为止还没有做太多,但我希望的是一个战斗系统,允许你瞄准特定的身体部位(我选择将它们定义为一个对象)。以下代码旨在获取目标单元、该单元的一部分和用于攻击的手(在此代码段中仅右侧)并调用将“损坏”它的目标身体部位的方法。

    def attack(self, target, part, hand):
        if hand == 'right':
             if self.righthand.o <> []:    #this checks if the righthand has a weapon
                 dmg = self.righthand.o[0].getdmg()  #gets damage from the weapon
                 target.part.deltahealth(dmg)  #reduces the bodyparts HP value

现在问题出现在上面的第 5 行。在我的脑海中,这意味着将其称为特定部分。如 target.lefthand.deltahealth(dmg) 或 target.righthand.deltahealth(dmg)

    class Bodypart(object):

        def __init__(self, e, t):
            self.MHP = self.gmh(e,t) #this calculates a health, not relevant really
            self.CHP = self.gmh(e,t)
            self.holding()
            self.status = 'Healthy'

       def deltahealth(self,d):
            self.CHP = self.CHP - d  #specifically this

但是,它不起作用,因为它查找 bodypart 'part' 而不是 part 的值。反正有没有按照我正在寻找的方式进行这项工作?

4

1 回答 1

0

您正在寻找getattr。在上面的示例中,它应该是:

getattr(target,part).deltahealth(dmg)

请注意,要使其正常工作,part 必须是字符串。

  1. http://docs.python.org/2/library/functions.html#getattr
于 2013-11-03T14:54:25.847 回答