De bal beweegt, maar je kunt het spel nog niet spelen. Daarom gaan we een plank toevoegen.

Schermafdruk van spelletje met basisstap 4 t/m 9.
3.1Stap 4: Teken de plank¶
Tips
De breedte van de plank in het spritesheet is 243 pixels, de hoogte is 64 pixels. Dat is de afmeting die het nieuwe plaatje moet hebben.
De plank staat in het spritesheet op x is 1158 en y is 396. Dat is de linkerbovenhoek van het stuk dat je uit het spritesheet moet kopieren.
Definieer de constanten
PADDLE_WIDTH
enPADDLE_HEIGHT
en geef ze de waarde 144 en 32. Dit is de afmeting waarnaar je het plaatje van de paddle moet verkleinen.Maak de variabelen
paddle_x
enpaddle_y
om bij te houden waar de paddle staat. Geef ze een startwaarde, bijvoorbeeldSCREEN_WIDTH / 2
enSCREEN_HEIGHT – 100
. Gebruikpaddle_x
enpaddle_y
om de plank op de goede plaats op het scherm te zetten.
3.2Stap 5: Beweeg de plank¶
Tips
Als de D-toets is ingedrukt, beweeg je de plank naar rechts door bij
paddle_x
tien op te tellen. De plank wordt daardoor verderop in de code op een nieuwe plek getekend.Als de A-toets is ingedrukt, beweegt de plank naar links.
Gebruik maar één keer de regel
keys = pygame.key.get_pressed()
om de stand van de toetsen te lezen
3.3Stap 6: Stop de plank aan de randen van het scherm¶
Tips
plank_x
in de pseudo-code ispaddle_x
in je code,breedte_van_scherm
in de pseudo-code isSCREEN_WIDTH
uit je code enplank_breedte
uit de pseudo-code isPADDLE_WIDTH
in je code.
3.4Stap 7: Stuiter de bal tegen de plank¶
Tips
Gebruik de pseudo-code. Gebruik nu geen ingebouwde functie van pygame om een botsing te detecteren.
Je kunt een lange conditie achter if over meerdere regels spreiden om het leesbaarder te maken. Zet de conditie dan tussen ( en ), bijvoorbeeld
if (x > 100 and
x < 200 and
y > 50 and
y < 150) :
rechter_kant_bal uit de pseudo-code is
ball_x + BALL_WIDTH
in je code.linker_kant_plank uit de pseudo-code is
paddle_x
in je code.De y-snelheid van de bal moet negatief (kleiner dan nul) zijn om te zorgen dat de bal omhoog beweegt. Want bovenaan het scherm is y gelijk aan nul en hoe verder naar onderen je komt hoe groter de y wordt.
Je kunt de y-snelheid negatief maken door een eventuele min eraf te halen en dan keer -1 te doen. De functie
abs(getal)
geeft als resultaat een getal zonder min. Dusabs(-2)
is 2 enabs(2)
is ook 2. Dusabs(ball_speed_y) * -1
geeft de negatieve waarde van de y-snelheid.Wat doet het algoritme als de bal tegen de zijkant van de plank kaatst? Wat zou je in het echt verwachten?
Hou het algoritme voor nu simpel, je kunt het bij de uitbreidingen nog aanpassen.
3.5Stap 8: Stop het spel als je af bent¶
Tips
Bovenaan het scherm is y gelijk aan 0. Hoe verder je naar beneden op het scherm komt, hoe groter het getal y wordt. De y-coördinaat van de bovenkant van de bal bewaar je in de variabele
ball_y
. De hoogte van de bal bewaar je inBALL_HEIGHT
. Hoe bereken je de y-coördinaat van de onderkant van de bal?Wat gebeurt er met de code die de bal tegen de onderkant van het scherm laat stuiteren? Wordt die code nog uitgevoerd?
3.6Stap 9: Toon een bericht als je af bent¶
Tips
Je kunt tijdens het spelen een ander bericht op het scherm zetten, bijvoorbeeld:
game_status_msg = "Speel met [A] en [D]"
Je kunt het bericht netjes in het midden van de regel uitlijnen met een berekening met
SCREEN_WIDTH
engame_status_img.get_width()
.