Ga naar hoofdinhoud

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()