J'essaie de comprendre pourquoi je reçois un FrontleLocalError dans mon application pygame, les guerres de table. Voici un résumé de ce qui se passe:
Les variables, Ceci fonctionne lors de la frayer des unités de la boucle principale, soustrayez des fonds pour engager des unités. P> en ce moment, j'essaie maintenant, j'essaie Pour mettre en place un système de sorte que lorsqu'une unité meurt, le tueur rembourse la commande Cela fonctionne jusqu'à ce que l'unité meurt. Ensuite, cela se produit: p> redgold code>,
redgommand code>,
bluegold code> et
bluecommand code>, sont initialisés comme variables globales: p>
de la victime CODE> et gagne
or code> en fonction de ce qu'il a tué: p>
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
3 Réponses :
addenda strong> p> < p> Voici une illustration de la nécessité d'utiliser globalement plus d'une fois. Essayez ceci: p> Vous obtiendrez l'erreur MAINTENU La déclaration globale en F et il fonctionnera. p> La déclaration code> global code> est active dans une portée lexicale et non une portée dynamique. P> P> global code> rend la variable globale visible dans le bloc de code actuel. Vous ne mettez que l'instruction
global code> dans
principale code>, pas dans
attaque code>.
Unboundlocalerror: une variable locale "rouge" référencée avant l'attribution code>. P>
C'est exactement ce que j'ai fait. Les variables globales sont appelées dans la boucle principale, juste après la fonction principale () code> définit l'écran et initialise l'horloge.
Vous devez déclarer la variable comme globale dans chaque portée où ils sont modifiés p>
Mieux vaut mais trouver un moyen de ne pas utiliser les globaux. A du sens pour ceux d'être des attributs de classe par exemple? P>
a trouvé que les variables dans Essayez: p> C'est ok. P> mais: p> xxx pré> générer p> et: p> génère p> principale forte> code> agissent comme des variables "en lecture seule" globales dans la fonction. Si nous essayons de réaffecter la valeur, elle générera une erreur.
File "./test.py", line 6, in f
print A[RED]
UnboundLocalError: local variable **'RED'** referenced before assignment