7.2 High score bijhouden
Nu we weten hoe set_data() en get_data() werken, kunnen we een high score systeem maken!
Een simpele high score
import play
database = play.new_database()
huidige_highscore = database.get_data('punten', 0)
tekst = play.new_text(words="High score: " + str(huidige_highscore))
@play.when_key_pressed("space")
def update_high_score():
punten = database.get_data('punten', 0)
database.set_data('punten', punten + 1)
tekst.words = "High score: " + str(database.get_data('punten'))
Elke keer dat je op spatie drukt, wordt de high score met 1 verhoogd en opgeslagen. Sluit het programma af en start het opnieuw. Je high score is bewaard!
Opdracht 7.2.a: Klik-teller
Maak een programma waarbij:
- Je een cirkel op het scherm zet
- Elke keer als je op de cirkel klikt, gaat een teller omhoog
- De teller wordt opgeslagen in de database
- Als je het programma opnieuw start, begint de teller waar je was gebleven
Klik hier voor een tip!
Gebruik @cirkel.when_clicked om te detecteren of je op de cirkel klikt. Vergeet niet om de teller op te halen met een default waarde!
Klik hier voor de oplossing!
import play
database = play.new_database()
teller = database.get_data('klikken', 0)
cirkel = play.new_circle(color='blue', radius=80)
tekst = play.new_text(words=str(teller), y=200)
@cirkel.when_clicked
def geklikt():
global teller
teller = teller + 1
database.set_data('klikken', teller)
tekst.words = str(teller)
Opdracht 7.2.b: Alleen opslaan als het beter is
Bij een echte high score sla je alleen de score op als die hoger is dan de vorige. Maak een programma waarbij:
- De huidige high score uit de database wordt opgehaald
- Bij elke spatie gaat de score omhoog
- Bij de toets
rwordt de score gereset naar 0 - Alleen als de score hoger is dan de high score, wordt de high score bijgewerkt
Klik hier voor een tip!
Je hebt twee variabelen nodig: score (de huidige score) en highscore (de opgeslagen best score). Vergelijk ze met een if-statement.
Klik hier voor de oplossing!
import play
database = play.new_database()
score = 0
highscore = database.get_data('highscore', 0)
score_tekst = play.new_text(words="Score: " + str(score), y=100)
highscore_tekst = play.new_text(words="High score: " + str(highscore), y=-100)
@play.when_key_pressed("space")
def punt():
global score, highscore
score = score + 1
score_tekst.words = "Score: " + str(score)
if score > highscore:
highscore = score
database.set_data('highscore', highscore)
highscore_tekst.words = "High score: " + str(highscore)
@play.when_key_pressed("r")
def reset():
global score
score = 0
score_tekst.words = "Score: " + str(score)