Ungebundener lokaler Fehler mit globaler Variable

Ich versuche herauszufinden, warum ich in meiner Pygame-Anwendung Table Wars einen UnboundLocalError erhalte. Hier ist eine Zusammenfassung dessen, was passiert:

Die Variablen,REDGOLD, REDCOMMAND, BLUEGOLD undBLUECOMMAND, werden als globale Variablen initialisiert:

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

def main():    

    [...]

    global REDGOLD
    global REDCOMMAND
    global BLUEGOLD
    global BLUECOMMAND

Dies funktioniert, wenn Einheiten in der Hauptschleife gespawnt werden, wobei Geld von den Spawn-Einheiten abgezogen wird.

Im Moment versuche ich, ein System einzurichten, damit der Mörder das Opfer zurückerstattet, wenn eine Einheit stirbtCOMMAND und verdientGOLD basierend auf dem, was er getötet hat:

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 += self.target.cmdback     #They will cause the UnboundLocalError
                                               #when performed
        self.target = None
    if not self.cooldown_ready(): return
    self.target.health -= self.attack_damage
    print "Target's health: %d" % self.target.health

Dies funktioniert bis zum Tod des Geräts. Dann passiert folgendes:

Traceback (most recent call last):
File "C:\Users\Oventoaster\Desktop\Games\Table Wars\Table Wars.py", line 606, in <module>
main()
File "C:\Users\Oventoaster\Desktop\Games\Table Wars\Table Wars.py", line 123, 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 304, in update
self.attack()
File "C:\Users\Oventoaster\Desktop\Games\Table Wars\Table Wars.py", line 320, in attack
REDGOLD += self.target.reward
UnboundLocalError: local variable 'REDGOLD' referenced before assignment

Wie bekomme ich die oben genannten globalen Variablen mit dem zu ändernattack Block? Wenn es hilft, verwende ich Pygame 2.7.x, alsononlocal funktioniert nicht: /

Antworten auf die Frage(3)

Ihre Antwort auf die Frage