小编Ove*_*ter的帖子

全局变量的未绑定本地错误

我试图弄清楚为什么我的pygame应用程序Table Wars中出现UnboundLocalError.以下是发生的情况摘要:

变量,REDGOLD,REDCOMMAND,BLUEGOLDBLUECOMMAND,被初始化为全局变量:

#Red Stat Section
REDGOLD = 50
REDCOMMAND = 100
#Blue Stat Section
BLUEGOLD = 50
BLUECOMMAND = 100

def main():    

    [...]

    global REDGOLD
    global REDCOMMAND
    global BLUEGOLD
    global BLUECOMMAND
Run Code Online (Sandbox Code Playgroud)

这在主循环中产生单位时减少了产生单位的资金.

现在,我正在尝试建立一个系统,以便当一个单位死亡时,杀手会根据他杀死的内容退还受害者COMMAND并获得收入GOLD:

class Red_Infantry(pygame.sprite.Sprite):
def __init__(self, screen):
    [...]
    self.reward = 15
    self.cmdback = 5

[...]

def attack(self):
    if self.target is None: return
    if self.target.health <= 0:
        REDGOLD += self.target.reward          #These are the problem lines
        BLUECOMMAND += …
Run Code Online (Sandbox Code Playgroud)

python debugging pygame

7
推荐指数
2
解决办法
6555
查看次数

AttributeError:NoneType对象没有属性'health'

我在战略游戏Table Wars中进行了长时间的比赛,我得到了这个错误.只要战场上有很多单位,似乎就会发生这种情况.这是追溯:

Traceback (most recent call last):
  File "C:\Users\Oventoaster\Desktop\Games\Table Wars\Table Wars.py", line 727, in <module>
    main()
  File "C:\Users\Oventoaster\Desktop\Games\Table Wars\Table Wars.py", line 131, in main
RedTeam.update()
  File "C:\Python27\lib\site-packages\pygame\sprite.py", line 399, in update
for s in self.sprites(): s.update(*args)
  File "C:\Users\Oventoaster\Desktop\Games\Table Wars\Table Wars.py", line 372, in update
self.attack()
  File "C:\Users\Oventoaster\Desktop\Games\Table Wars\Table Wars.py", line 393, in attack
    self.target.health -= self.attack_damage
AttributeError: 'NoneType' object has no attribute 'health'
Run Code Online (Sandbox Code Playgroud)

例外似乎出现在定位和攻击代码中,因此我将在此处发布:

def move_toward(self, target):
    if self.target is None:
        self.rect.move_ip(1, 0)

def update(self):
    self.find_target()
    self.move_toward(self.target)
    self.attack()
    if self.health …
Run Code Online (Sandbox Code Playgroud)

python debugging pygame

0
推荐指数
1
解决办法
1685
查看次数

标签 统计

debugging ×2

pygame ×2

python ×2