Jaar 2 - Module 1 - Les 4: Werken met rectangles in PyGame
Hoe je PyGame afebeeldingen verplaatst zodat ze klikbaar zijn
Met PyGame kunnen we een user interface maken.
Met PyGame kunnen we een user interface maken.
In een user interface ziet de gebruiker wat hij moet doen, en hoe hij dat moet doen.
Met PyGame kunnen we een user interface maken.
In een user interface ziet de gebruiker wat hij moet doen, en hoe hij dat moet doen.
Voor een quiz ziet de gebruiker, bijv de vraag op te beantwoorden, en hoe de vraag beantwoord moet worden, bijv. door op het juiste antwoord te klikken.
Met PyGame kunnen we een user interface maken.
In een user interface ziet de gebruiker wat hij moet doen, en hoe hij dat moet doen.
Voor een quiz ziet de gebruiker, bijv de vraag op te beantwoorden, en hoe de vraag beantwoord moet worden, bijv. door op het juiste antwoord te klikken.
Daarvoor moet je ook de rechthoek van plaatjes verplaatsen.
Met PyGame kunnen we een user interface maken.
In een user interface ziet de gebruiker wat hij moet doen, en hoe hij dat moet doen.
Voor een quiz ziet de gebruiker, bijv de vraag op te beantwoorden, en hoe de vraag beantwoord moet worden, bijv. door op het juiste antwoord te klikken.
Daarvoor moet je ook de rechthoek van plaatjes verplaatsen.
Dat gaan we vandaag leren!
Vorige les hebben we muiskliks afgehandeld op de letter A afgehandeld. De letter waarop geklikt werd, kwam in beeld met een print().
Vorige les hebben we muiskliks afgehandeld op de letter A afgehandeld. De letter waarop geklikt werd, kwam in beeld met een print().
Misschien heb je ook gezien dat het voor de andere letters nog niet goed werkte!
Vorige les hebben we muiskliks afgehandeld. De letter waarop geklikt werd, kwam in beeld met een print().
De letters staan er wel, maar je kunt er niet op klikken. Je klikt altijd op de A.
Vorige les hebben we muiskliks afgehandeld. De letter waarop geklikt werd, kwam in beeld met een print().
De letters staan er wel, maar je kunt er niet op klikken. Je klikt altijd op de A.
Hoe dat komt, gaan we nu leren!
Deze code zagen we in de demo.
# hier hoort code om pygame aan te zetten
# en het veld op de juiste grootte te zetten
A = pygame.image.load("A.png")
B = pygame.image.load("B.png")
while True:
# Hier hoort code om alle elementen, zoals
# de tekst neer te zetten
screen.blit(A, (0, 0))
screen.blit(B, (500, 10))
pygame.event.get()
locatie_muis = pygame.mouse.get_pos()
knoppen = pygame.mouse.get_pressed()
if knoppen[0] == 1:
if A.get_rect().collidepoint(locatie_muis):
print('A')
if B.get_rect().collidepoint(locatie_muis):
print('B')
time.sleep(0.5) #even wachten op de volgende klik!
Deze code zagen we in de demo. Die was bijna goed, maar nog niet helemaal.
# hier hoort code om pygame aan te zetten
# en het veld op de juiste grootte te zetten
A = pygame.image.load("A.png")
B = pygame.image.load("B.png")
while True:
# Hier hoort code om alle elementen, zoals
# de tekst neer te zetten
screen.blit(A, (0, 0))
screen.blit(B, (500, 10))
pygame.event.get()
locatie_muis = pygame.mouse.get_pos()
knoppen = pygame.mouse.get_pressed()
if knoppen[0] == 1:
if A.get_rect().collidepoint(locatie_muis):
print('A')
if B.get_rect().collidepoint(locatie_muis):
print('B')
time.sleep(0.5) #even wachten op de volgende klik!
Deze code zagen we in de demo. Die was bijna goed, maar nog niet helemaal.
Dat komt door de blit().
# hier hoort code om pygame aan te zetten
# en het veld op de juiste grootte te zetten
A = pygame.image.load("A.png")
B = pygame.image.load("B.png")
while True:
# Hier hoort code om alle elementen, zoals
# de tekst neer te zetten
screen.blit(A, (0, 0))
screen.blit(B, (500, 10))
pygame.event.get()
locatie_muis = pygame.mouse.get_pos()
knoppen = pygame.mouse.get_pressed()
if knoppen[0] == 1:
if A.get_rect().collidepoint(locatie_muis):
print('A')
if B.get_rect().collidepoint(locatie_muis):
print('B')
time.sleep(0.5) #even wachten op de volgende klik!
Deze code zagen we in de demo. Die was bijna goed, maar nog niet helemaal.
Dat komt door de blit().
blit() zet wel een plaatje op de juiste plek, maar niet het "klik" vierkant dat bij het plaatje hoort.
# hier hoort code om pygame aan te zetten
# en het veld op de juiste grootte te zetten
A = pygame.image.load("A.png")
B = pygame.image.load("B.png")
while True:
# Hier hoort code om alle elementen, zoals
# de tekst neer te zetten
screen.blit(A, (0, 0))
screen.blit(B, (500, 10))
pygame.event.get()
locatie_muis = pygame.mouse.get_pos()
knoppen = pygame.mouse.get_pressed()
if knoppen[0] == 1:
if A.get_rect().collidepoint(locatie_muis):
print('A')
if B.get_rect().collidepoint(locatie_muis):
print('B')
time.sleep(0.5) #even wachten op de volgende klik!
In de volgende demo kun je dat goed zien.
In de volgende demo kun je dat goed zien.
De A beweegt, maar de rect() blijft staan!
Nu gaan we de code aanpassen!
# hier hoort code om pygame aan te zetten
# en het veld op de juiste grootte te zetten
A = pygame.image.load("A.png")
B = pygame.image.load("B.png")
while True:
# Hier hoort code om alle elementen, zoals
# de tekst neer te zetten
screen.blit(A, (0, 0))
screen.blit(B, (0, 0))
pygame.event.get()
locatie_muis = pygame.mouse.get_pos()
knoppen = pygame.mouse.get_pressed()
if knoppen[0] == 1:
if A.get_rect().collidepoint(locatie_muis):
print('A')
if B.get_rect().collidepoint(locatie_muis):
print('B')
time.sleep(0.5) #even wachten op de volgende klik!
Nu gaan we de code aanpassen!
Dit is de code die we hadden, alleen voor de letter A.
# hier hoort code om pygame aan te zetten
# en het veld op de juiste grootte te zetten
A = pygame.image.load("A.png")
while True:
# Hier hoort code om alle elementen, zoals
# de tekst neer te zetten
screen.blit(A, (0, 0))
pygame.event.get()
locatie_muis = pygame.mouse.get_pos()
knoppen = pygame.mouse.get_pressed()
if knoppen[0] == 1:
if A.get_rect().collidepoint(locatie_muis):
print('A')
time.sleep(0.5) #even wachten op de volgende klik!
# hier hoort code om pygame aan te zetten
# en het veld op de juiste grootte te zetten
A = pygame.image.load("A.png")
A_rechthoek = A.get_rect()
while True:
# Hier hoort code om alle elementen, zoals
# de tekst neer te zetten
screen.blit(A, (0, 0))
pygame.event.get()
locatie_muis = pygame.mouse.get_pos()
knoppen = pygame.mouse.get_pressed()
if knoppen[0] == 1:
if A.get_rect().collidepoint(locatie_muis):
print('A')
time.sleep(0.5) #even wachten op de volgende klik!
Nu gaan we de code aanpassen!
Dit is de code die we hadden voor de letter A.
Deze regel is nieuw, we slaan de rechthoek nu op in een variabele.
# hier hoort code om pygame aan te zetten
# en het veld op de juiste grootte te zetten
A = pygame.image.load("A.png")
A_rechthoek = A.get_rect()
while True:
# Hier hoort code om alle elementen, zoals
# de tekst neer te zetten
screen.blit(A, (0, 0))
pygame.event.get()
locatie_muis = pygame.mouse.get_pos()
knoppen = pygame.mouse.get_pressed()
if knoppen[0] == 1:
if A.get_rect().collidepoint(locatie_muis):
print('A')
time.sleep(0.5) #even wachten op de volgende klik!
Nu gaan we de code aanpassen!
Dit is de code die we hadden voor de letter A.
Deze regel is nieuw, we slaan de rechthoek nu op in een variabele.
Dan kunnen we die rechthoek ook verplaatsen.
# hier hoort code om pygame aan te zetten
# en het veld op de juiste grootte te zetten
A = pygame.image.load("A.png")
A_rechthoek = A.get_rect()
while True:
# Hier hoort code om alle elementen, zoals
# de tekst neer te zetten
screen.blit(A, (0, 0))
pygame.event.get()
locatie_muis = pygame.mouse.get_pos()
knoppen = pygame.mouse.get_pressed()
if knoppen[0] == 1:
if A.get_rect().collidepoint(locatie_muis):
print('A')
time.sleep(0.5) #even wachten op de volgende klik!
Het blitten gaat nu ook anders.
Het blitten gaat nu ook anders.
We zetten de rechthoek op een plek neer.
# hier hoort code om pygame aan te zetten
# en het veld op de juiste grootte te zetten
A = pygame.image.load("A.png")
A_rechthoek = A.get_rect()
while True:
# Hier hoort code om alle elementen, zoals
# de tekst neer te zetten
screen.blit(A, (0, 0))
pygame.event.get()
locatie_muis = pygame.mouse.get_pos()
knoppen = pygame.mouse.get_pressed()
if knoppen[0] == 1:
if A.get_rect().collidepoint(locatie_muis):
print('A')
time.sleep(0.5) #even wachten op de volgende klik!
Het blitten gaat nu ook anders.
We zetten de rechthoek van A op een plek neer.
Hier is dat (300, 100).
# hier hoort code om pygame aan te zetten
# en het veld op de juiste grootte te zetten
A = pygame.image.load("A.png")
A_rechthoek = A.get_rect()
while True:
# Hier hoort code om alle elementen, zoals
# de tekst neer te zetten
A_rechthoek.center = (300, 100)
screen.blit(A, A_rechthoek)
pygame.event.get()
locatie_muis = pygame.mouse.get_pos()
knoppen = pygame.mouse.get_pressed()
if knoppen[0] == 1:
if A.get_rect().collidepoint(locatie_muis):
print('A')
time.sleep(0.5) #even wachten op de volgende klik!
Het blitten gaat nu ook anders.
Dan blitten we het plaatje meteen in de rechthoek.
# hier hoort code om pygame aan te zetten
# en het veld op de juiste grootte te zetten
A = pygame.image.load("A.png")
A_rechthoek = A.get_rect()
while True:
# Hier hoort code om alle elementen, zoals
# de tekst neer te zetten
A_rechthoek.center = (300, 100)
screen.blit(A, A_rechthoek)
pygame.event.get()
locatie_muis = pygame.mouse.get_pos()
knoppen = pygame.mouse.get_pressed()
if knoppen[0] == 1:
if A.get_rect().collidepoint(locatie_muis):
print('A')
time.sleep(0.5) #even wachten op de volgende klik!
Deze regel wordt ook ietsjes anders.
# hier hoort code om pygame aan te zetten
# en het veld op de juiste grootte te zetten
A = pygame.image.load("A.png")
A_rechthoek = A.get_rect()
while True:
# Hier hoort code om alle elementen, zoals
# de tekst neer te zetten
A_rechthoek.center = (300, 100)
screen.blit(A, A_rechthoek)
pygame.event.get()
locatie_muis = pygame.mouse.get_pos()
knoppen = pygame.mouse.get_pressed()
if knoppen[0] == 1:
if A.get_rect().collidepoint(locatie_muis):
print('A')
time.sleep(0.5) #even wachten op de volgende klik!
Deze regel wordt ook ietsjes anders.
# hier hoort code om pygame aan te zetten
# en het veld op de juiste grootte te zetten
A = pygame.image.load("A.png")
A_rechthoek = A.get_rect()
while True:
# Hier hoort code om alle elementen, zoals
# de tekst neer te zetten
A_rechthoek.center = (300, 100)
screen.blit(A, A_rechthoek)
pygame.event.get()
locatie_muis = pygame.mouse.get_pos()
knoppen = pygame.mouse.get_pressed()
if knoppen[0] == 1:
if A.get_rect().collidepoint(locatie_muis):
print('A')
time.sleep(0.5) #even wachten op de volgende klik!
Deze regel wordt ook ietsjes anders.
We kijken of locatie_muis de plek van de variabele A_rechthoek aanraakt.
# hier hoort code om pygame aan te zetten
# en het veld op de juiste grootte te zetten
A = pygame.image.load("A.png")
A_rechthoek = A.get_rect()
while True:
# Hier hoort code om alle elementen, zoals
# de tekst neer te zetten
A_rechthoek.center = (300, 100)
screen.blit(A, A_rechthoek)
pygame.event.get()
locatie_muis = pygame.mouse.get_pos()
knoppen = pygame.mouse.get_pressed()
if knoppen[0] == 1:
if A_rechthoek.collidepoint(locatie_muis):
print('A')
time.sleep(0.5) #even wachten op de volgende klik!
Nu werkt het klikken goed, waar we de A ook neerzetten!
# hier hoort code om pygame aan te zetten
# en het veld op de juiste grootte te zetten
A = pygame.image.load("A.png")
A_rechthoek = A.get_rect()
while True:
# Hier hoort code om alle elementen, zoals
# de tekst neer te zetten
A_rechthoek.center = (300, 100)
screen.blit(A, A_rechthoek)
pygame.event.get()
locatie_muis = pygame.mouse.get_pos()
knoppen = pygame.mouse.get_pressed()
if knoppen[0] == 1:
if A_rechthoek.collidepoint(locatie_muis):
print('A')
time.sleep(0.5) #even wachten op de volgende klik!
Nu werkt het klikken goed, waar we de A ook neerzetten!
Kijk maar mee in de demo.
# hier hoort code om pygame aan te zetten
# en het veld op de juiste grootte te zetten
A = pygame.image.load("A.png")
A_rechthoek = A.get_rect()
while True:
# Hier hoort code om alle elementen, zoals
# de tekst neer te zetten
A_rechthoek.center = (300, 100)
screen.blit(A, A_rechthoek)
pygame.event.get()
locatie_muis = pygame.mouse.get_pos()
knoppen = pygame.mouse.get_pressed()
if knoppen[0] == 1:
if A_rechthoek.collidepoint(locatie_muis):
print('A')
time.sleep(0.5) #even wachten op de volgende klik!
Lukt opdr. 3 nog niet?
Dat geeft niks, die doen we volgende week samen!