Cheatsheet
Vormen
Cirkel (play.new_circle)
import play
play.new_circle()
play.start_program()
Wat kan ik aanpassen aan een cirkel? Hierbij de lijst van attributen voor een cirkel:
- color: staat standaard op 'black'. Op deze pagina zie je welke opties er zijn.
- x: staat standaard op 0 (het midden). Lager dan 0 is naar links, boven 0 is naar rechts.
- y: staat standaard op 0 (het midden), Lager dan 0 is naar beneden, boven 0 is naar boven.
- radius: staat standaard op 100. Hoe groter de waarde, hoe groter de cirkel.
- border_color: staat standaard op 'light blue'. Let op, als de border_width 0 is, zie je de rand niet.
- border_width: de breedte van de rand. Staat standaard op 0 (geen rand zichtbaar)
- transparency: 0 --> onzichtbaar. 100 --> volledig zichtbaar.
Voorbeeld van een kleine blauwe cirkel die een beetje naar rechts staat:
import play
cirkel = play.new_circle(color='blue', radius=20, x=100)
play.start_program()
Vierkant of rechthoek (play.new_box)
import play
play.new_box()
play.start_program()
Net zoals bij play.new_circle heeft het programma voor ons nu ook al de kleur en grootte bepaald. Je kunt dit zelf natuurlijk aanpassen! Dit zijn de attributen voor play.new_box:
- color: staat standaard op 'black'. Op deze pagina zie je welke opties er zijn.
- x: staat standaard op 0 (het midden). Lager dan 0 is naar links, boven 0 is naar rechts.
- y: staat standaard op 0 (het midden), Lager dan 0 is naar beneden, boven 0 is naar boven.
- width: de breedte van de rechthoek.
- height: de hoogte van de rechthoek.
- border_color: staat standaard op 'light blue'. Let op, als de border_width 0 is, zie je de rand niet.
- border_radius: de breedte van de rand. Staat standaard op 0 (geen rand zichtbaar)
- transparency: 0 --> onzichtbaar. 100 --> volledig zichtbaar.
Voorbeeld van een rode rechthoek die een beetje boven het midden staat:
import play
box = play.new_box(color='red', y=100)
play.start_program()
Tekst (play.new_text)
import play
play.new_text()
play.start_program()
Je kunt voor play.new_text kiezen uit:
- words: de woorden die op het scherm komen te staan
- x: staat standaard op 0 (het midden). Lager dan 0 is naar links, boven 0 is naar rechts.
- y: staat standaard op 0 (het midden), Lager dan 0 is naar beneden, boven 0 is naar boven.
- font: de font van de tekst. Kun je bijvoorbeeld aanpassen naar 'arial'.
- font_size: de grootte van de font.
- color: de kleur van de tekst.
Voorbeeld van een blauwe tekst midden bovenaan het scherm met een net iets grote font size:
import play
tekst = play.new_text(words="Hello world", y=200, font_size=50)
play.start_program()
Hoe weet ik precies de locatie van de rechterkant (right), linkerkant (left), bovenkant (top) en onderkant (bottom) van een vorm?
Dat gaat via:
- rechterkant (right)
- linkerkant (left)
- bovenkant (top)
- onderkant (bottom)
Als ik bijvoorbeeld wil weten wat de meest rechter pixel is van een cirkel, kan ik het volgende doen:
import play
cirkel = play.new_circle()
print(cirkel.right)
play.start_program()
Als het goed is, zie je het volgende in je shell of console
pygame-ce 2.5.3 (SDL 2.30.12, Python 3.10.11)
100.0
Nu weet je dus dat de meest rechter pixel van de bal op x=100 staat.
Fysica
Hoe voeg ik fysica toe aan een vorm? (start_physics)
import play
cirkel = play.new_circle()
cirkel.start_physics()
play.start_program()
Hoe verander ik de fysica van een vorm? (start_physics)
import play
cirkel = play.new_circle()
cirkel.start_physics(obeys_gravity=False)
play.start_program()
OF (nuttig als je iets wil veranderen tijdens het spel)
import play
cirkel = play.new_circle()
cirkel.start_physics()
cirkel.physics.obeys_gravity = False
play.start_program()
Wat kan ik allemaal aanpassen aan de fysica? (start_physics)
Attribuut | Uitleg |
---|---|
obeys_gravity | True --> zwaartekracht wordt nagedaan, False --> geen zwaartekracht |
x_speed | hoe hard wil je dat de bal beweegt op de horizontale as? |
y_speed | hoe hard wil je dat de bal beweegt op de verticale as? |
can_move | True --> de vorm mag bewegen, False, de vorm staat altijd stil |
stable | True --> als iets botst tegen vorm, zal deze niet bewegen, False, de vorm zal bewegen bij een botsing. |
bounciness | 1.0 vorm kaatst net zo hard terug als dat deze aankwam. 0 --> vorm kaatst niet terug bij botsing |
mass | hoe 'zwaar' is je vorm? Dit kan snel ingewikkeld worden. Maar je kan je voorstellen dat een botsing anders is tussen twee vormen die even zwaar zijn in plaats van als vormen verschillend gewicht hebben. |
friction | 0 --> geen frictie (energie blijft behouden). |
Hoe zet ik de fysica op pauze en weer aan? (.phyiscs.pause() & .physics.unpause())
Met .physics.pause zet je de fysica op pauze en met .physics.unpause zet je de fysica weer aan.
Een voorbeeld met pause:
import play
cirkel = play.new_circle()
cirkel.start_physics()
cirkel.physics.pause()
play.start_program()
Een voorbeeld met ook unpause:
import play
cirkel = play.new_circle()
cirkel.start_physics()
cirkel.physics.pause()
cirkel.physics.unpause()
play.start_program()
Hoe zet ik de fysica uit? (stop_physics())
Met stop_physics() zet je de physics uit.
import play
cirkel = play.new_circle()
cirkel.start_physics()
cirkel.stop_physics()
play.start_program()
Acties
Hoe maak ik een vorm onzichtbaar (hide)?
Hiermee teken je een cirkel en maak je hem onmiddelijk onzichtbaar.
Let op: .hide() verandert het volgende:
- cirkel.is_hidden krijgt de waarde True
- cirkel.is_shown krijgt de waarde False
- Als je fysica gebruikt, gaat die op pauze :)
import play
cirkel = play.new_circle()
cirkel.hide()
play.start_program()
Hoe maak een ik vorm weer zichtbaar (show)?
Hiermee teken je een cirkel en maak je hem onmiddelijk onzichtbaar en weer zichtbaar
Let op: .show() verandert het volgende:
- cirkel.is_hidden krijgt de waarde False
- cirkel.is_shown krijgt de waarde True
- Als je fysica gebruikte, gaat deze weer aan en weer werken
import play
cirkel = play.new_circle()
cirkel.hide()
cirkel.show()
play.start_program()
Hoe verwijder ik een vorm? (remove)?
Allereerst een vraag: heb je dit echt nodig of is .hide() misschien ook al genoeg? Met .remove():
- verwijder je de vorm
- je kunt opvragen of de vorm 'leeft' via cirkel.is_alive(). Deze is False als de vorm verwijderd is.
import play
cirkel = play.new_circle()
cirkel.remove()
play.start_program()
Gebeurtenissen
Bij de start van het programma (@play.when_program_starts)
import play
@play.when_program_starts
def setup_game():
play.new_text(words="Welkom!")
play.start_program()
Bij het indrukken van één specifieke toets (@play.when_key_pressed)
Je gebruikt @play.when_key_pressed om te checken of een toets ingedrukt wordt. Wat je tussen de haakjes zet (in dit geval 'space') is welke toets gedetecteerd wordt.
import play
box = play.new_box()
@play.when_key_pressed("space")
def spatie_ingedrukt():
box.x = box.x + 10
play.start_program()
Bij het indrukken van twee of meerdere toetsen (@play.when_key_pressed)
Als je met meerdere toetsen te maken hebt, heb je in ieder geval twee opties.
- twee losse @play.when_key_pressed gebeurtenissen
- één play.when_key_pressed gebeurtenis
twee @play.when_key_pressed gebeurtenissen
import play
box = play.new_box()
@play.when_key_pressed("up")
def omhoog():
box.y = box.y + 10
@play.when_key_pressed('down')
def omlaag():
box.y = box.y - 10
play.start_program()
OF
één @play.when_key_pressed gebeurtenis Let op, nu heb je key nodig.
import play
box = play.new_box()
@play.when_key_pressed("down", "up")
def omhoog_of_omlaag(key):
if key == 'up':
box.y = box.y + 10
if key == 'down':
box.y = box.y - 10
play.start_program()
Bij het loslaten van één specifieke toets (@play.when_key_released)
Je gebruikt @play.when_key_released om te checken of een toets losgelaten wordt.
import play
box = play.new_box()
@play.when_key_released("up")
def omhoog():
box.y = box.y + 10
play.start_program()
Bij het loslaten van twee of meerdere toetsen (@play.when_key_released)
Als je met meerdere toetsen te maken hebt, heb je in ieder geval twee opties.
- twee losse @play.when_key_released gebeurtenissen
- één play.when_key_released gebeurtenis
twee @play.when_key_released gebeurtenissen
import play
box = play.new_box()
@play.when_key_released("up")
def omhoog():
box.y = box.y + 10
@play.when_key_released('down')
def omlaag():
box.y = box.y - 10
play.start_program()
OF
één @play.when_key_released gebeurtenis Let op, nu heb je key nodig.
import play
box = play.new_box()
@play.when_key_released("down", "up")
def omhoog_of_omlaag(key):
if key == 'up':
box.y = box.y + 10
if key == 'down':
box.y = box.y - 10
play.start_program()
Bij het indrukken van een willekeurige toets (@play.when_any_key_pressed)
Met @play.when_any_key_pressed kun je een functie uitvoeren zodra welke toets dan ook op het toetsenbord wordt ingedrukt. Met key kun je dan weten welke toets ingedrukt wordt.
import play
instructie_tekst = play.new_text("Druk op een toets", y=50)
feedback_tekst = play.new_text(words="", y=0)
@play.when_any_key_pressed
def handel_toets_af(key):
feedback_tekst.words = f"Je drukte op: {key}"
play.start_program()
Bij het loslaten van een willekeurige toets (@play.when_any_key_released)
Met @play.when_any_key_released kun je een functie uitvoeren zodra welke toets dan ook op het toetsenbord wordt losgelaten. Met key kun je dan weten welke toets losgelaten wordt.
import play
instructie_tekst = play.new_text("Laat een toets los", y=50)
feedback_tekst = play.new_text(words="", y=0)
@play.when_any_key_released
def toets_wordt_losgelaten(key):
feedback_tekst.words = f"Je liet los: {key}"
play.start_program()
Bij het indrukken van de muis (@play.when_mouse_clicked)
when_mouse_clicked gebruik je voor om een muisklik te detecteren.
import play
# Maak een cirkel
circle = play.new_circle(color="blue")
# Deze functie wordt uitgevoerd als je op de muis klikt
@play.when_mouse_clicked
def muis_geklikt():
if circle.color == "blue":
circle.color = "red"
else:
circle.color = "blue"
print("Muis geklikt! De cirkel is nu " + str(circle.color))
# Start het programma
play.start_program()
Bij het loslaten van de muis (@play.when_click_released)
Let op, deze gebeurtenis gebeurt pas als je de muis loslaat.
import play
# Maak een cirkel
circle = play.new_circle(color="blue")
# Deze functie wordt uitgevoerd als je op de muis klikt
@play.when_click_released
def muis_geklikt():
if circle.color == "blue":
circle.color = "red"
else:
circle.color = "blue"
print("Muis geklikt! De cirkel is nu " + str(circle.color))
# Start het programma
play.start_program()
Bij elk frame (@play.repeat_forever)
import play
frames=0
play.new_text('Aantal frames sinds start:', y=100)
tekst = play.new_text(words=str(frames))
@play.repeat_forever
def altijd():
global frames
frames = frames + 1
tekst.words = str(frames)
play.start_program()
Gebeurtenis bij een vorm
Wanneer een vorm stopt met het aanraken van een andere vorm (@VARIABLE.when_stopped_touching)
import play
bal = play.new_circle(color="blue", radius=50)
bal.start_physics(obeys_gravity=False, x_speed=60)
batje = play.new_box(x=300)
batje.start_physics(can_move=False, obeys_gravity=False)
text = play.new_text(words="batje is niet aangeraakt", y=200)
@bal.when_stopped_touching(batje)
def aangeraakt():
text.words = 'batje is aangeraakt'
play.start_program()
Wanneer een vorm stopt met het aanraken van de muur (@VARIABLE.when_stopped_touching_wall)
import play
bal = play.new_circle(color="blue", radius=50)
bal.start_physics(obeys_gravity=False, x_speed=60)
text = play.new_text(words="muur is niet aangeraakt", y=200)
@bal.when_stopped_touching_wall
def aangeraakt():
text.words = 'muur is aangeraakt'
play.start_program()
Zodra twee vormen elkaar raken (@VARIABLE.when_touching)
import play
bal = play.new_circle(radius=50)
bal.start_physics(obeys_gravity=False, x_speed=20)
batje = play.new_box(x=200)
tekst = play.new_text("batje nog niet aangeraakt", y=200)
@bal.when_touching(batje)
def batje_aangeraakt():
tekst.words = 'batje wel aangeraakt'
play.start_program()
Je kunt overigens ook VARIABLE.is_touching(VARIABLE) gebruiken: Elke keer als je pijltje omhoog klikt, zie je of de bal het batje aanraakt:
import play
bal = play.new_circle(radius=50)
bal.start_physics(obeys_gravity=False, x_speed=50)
batje = play.new_box(x=200)
tekst = play.new_text("bal raakt batje niet", y=200)
@play.when_key_pressed('up')
def pijlte_omhoog():
if bal.is_touching(batje):
tekst.words = 'bal raakt batje'
else:
tekst.words = 'bal raakt batje niet'
play.start_program()
Wanneer een vorm de muur aanraakt (@VARIABLE.when_touching_wall)
import play
bal = play.new_circle(radius=50)
bal.start_physics(obeys_gravity=False, x_speed=50)
@bal.when_touching_wall
def teleport():
bal.x=0
play.start_program()
Wanneer er op een vorm geklikt wordt (@VARIABLE.when_clicked)
import play
bal = play.new_circle(radius=50)
bal.start_physics(obeys_gravity=False, x_speed=50)
@bal.when_clicked
def geklikt():
bal.x=0
play.start_program()
Tijd
Ik wil tijdelijk iets veranderen aan een vorm, bijvoorbeeld de snelheid (async await)
import play
ball = play.new_circle(color='black')
ball.start_physics(obeys_gravity=False, x_speed=10)
@play.when_mouse_clicked
async def tijdelijk_sneller():
ball.physics.x_speed = 30
await play.timer(seconds=1)
ball.physics.x_speed = 10
play.start_program()
Hoe maak ik een timer?
import play
time = 10
text = play.new_text(str(time))
print(time)
@play.repeat_forever
async def timer():
global time
if time > 0:
time -= 1
await play.timer(seconds=1)
text.words = str(time)
play.start_program()
Global
Hoe houd ik een score van mijn spel bij? (global)
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()