7. Een score bijhouden met global
Hoe houd je een score bij in een spel? Als je een variabele, zoals score, wilt aanpassen binnen een functie, heb je het speciale sleutelwoord global nodig.
7.1 Een veelgemaakte fout
Kopieer onderstaande code naar je editor en voer de code uit:
import play
score = 0
score_tekst = play.new_text(str(score), y=100, font_size=40)
@play.when_key_released("space")
def spatie_ingedrukt():
score = score + 1
score_tekst.words = str(score)
play.start_program()
Druk maar eens op spatie. Als het goed is verandert er niets en zie je het volgende in je console:
UnboundLocalError: local variable 'score' referenced before assignment
Python denkt dat score in de functie (bij score = score + 1) een nieuwe variabele is.
Daardoor kent hij de score van buiten de functie (score = 0) niet.
Met global score geef je aan dat de score die buiten de functie is gemaakt, binnen de functie gebruikt en aangepast moet worden.
7.2 De oplossing: global
Met global score vertel je Python dat je de variabele van buiten de functie wilt gebruiken:
import play
score = 0
score_tekst = play.new_text(str(score), y=100, font_size=40)
@play.when_key_released("space")
def spatie_ingedrukt():
global score
score = score + 1
score_tekst.words = str(score)
play.start_program()