Ga naar hoofdinhoud

7.5 Voortgang en zweeftekst

Hier bouw je op verder: If en else

Weet je dit niet meer zeker? Lees het terug voordat je verdergaat.

De vorige elementen waren om te bedienen. Deze twee zijn om te tonen: een balk die voortgang laat zien, en een tekstje dat verschijnt als je ergens overheen zweeft.

De voortgangsbalk​

play.new_progress_bar is een balk die zich vult tussen een minimum en een maximum. Je zet de vulling met balk.value — de speler kan er zelf niets aan slepen.

Spel laden...
import play

balk = play.new_progress_bar(min_value=0, max_value=100, value=0, y=60, show_label=True)
knop = play.new_button(text="Laad op", y=-60)

@knop.when_clicked
def opladen():
if balk.value < 100:
balk.value = balk.value + 10
  1. Regel 3:

    De balk loopt van 0 tot 100 en begint leeg. Met show_label=True staat het percentage erin.

  2. Regel 4:

    De knop waarmee de speler de balk vult. De balk zelf reageert nergens op; jij bepaalt wanneer hij verandert.

  3. Regel 8:

    Zonder deze controle zou de balk voorbij zijn max_value blijven tellen.

  4. Regel 9:

    Tien procent erbij. balk.value uitlezen en zetten gaat allebei via dezelfde naam.

Een voortgangsbalk is bijvoorbeeld handig als levensbalk, als laadbalk of als timer.

De zweeftekst​

play.new_tooltip hangt een korte uitleg aan een andere vorm of knop. De tekst verschijnt vanzelf zodra de muis op het doelwit staat, en verdwijnt weer zodra de muis weggaat.

Spel laden...
import play

knop = play.new_button(text="?")
play.new_tooltip(text="Deze knop doet nog niets", target=knop)
  1. Regel 3:

    Het doelwit: de vorm waar de muis overheen moet om de tekst te laten verschijnen.

  2. Regel 4:

    De zweeftekst zelf. Je hoeft hem niet in een variabele te zetten — hij hangt vanaf nu aan zijn target. Dat target mag elke vorm zijn, dus ook een cirkel of afbeelding.

Met offset_x en offset_y schuif je de tekst wat verder van de muis af.

Opdracht 7.5.a: Levensbalk​

Maak een levensbalk die op 100 begint en een knop Au. Elke klik haalt er 20 vanaf. Is de balk leeg, dan verschijnt de tekst "Game over" en gaat de knop uit.

Klik hier voor een tip.

Controleer ín de klikfunctie of balk.value op 0 staat. Zo ja: zet knop.disabled = True en verander de tekst.

Klik hier voor de oplossing.
import play

tekst = play.new_text(words="", y=120)
balk = play.new_progress_bar(min_value=0, max_value=100, value=100, y=40, bar_color='crimson', show_label=True)
knop = play.new_button(text="Au", y=-60)

@knop.when_clicked
def au():
balk.value = balk.value - 20
if balk.value <= 0:
tekst.words = "Game over"
knop.disabled = True
Spel laden...
Waar kom je dit later weer tegen?

Een voortgangsbalk werkt ook goed als levensbalk of als timer. In 9.1 Levels met andere instellingen zet je zo'n balk per level anders.