In deze les gaan we leren hoe je afbeeldingen in Pygame kan laten bewegen met input van een gebruiker.
Dit is de code:
import pygame
import sys
from pygame.locals import *
window_breedte = 500
window_hoogte = 500
x = 0
y = 0
snelheid = 3
up = False
down = False
left = False
right = False
window = pygame.display.set_mode((window_breedte, window_hoogte))
frames_per_seconden = 32
frames_per_seconden_klok = pygame.time.Clock()
pygame.display.set_caption("Dit is de naam van je project") # Dit is de naam van het project.
player = pygame.image.load('Afbeeldingen/player.png').convert_alpha()
achtergrond = pygame.image.load('Afbeeldingen/achtergrond.jpg').convert_alpha()
# Tussen de '' steek je een afbeelding die je wil gebruiken in je spel
while True:
# Dit is de game loop
for evenement in pygame.event.get():
# De for - loop gaat werken als er iets gebeurt bv.
# muis beweegt of knop ingeduwd dan voert hij de onderstaande code uit
# Een gebruiker kan het spel stoppen door op het kruisje te drukken of op ESC te drukken.
if evenement.type == QUIT or (evenement.type == KEYDOWN and evenement.key == K_ESCAPE):
print('QUIT')
pygame.quit()
sys.exit()
elif evenement.type == KEYDOWN and (evenement.type == K_RIGHT or evenement.key == K_RIGHT):
right = True
elif evenement.type == KEYDOWN and (evenement.type == K_LEFT or evenement.key == K_LEFT):
left = True
elif evenement.type == KEYDOWN and (evenement.type == K_UP or evenement.key == K_UP):
up = True
elif evenement.type == KEYDOWN and (evenement.type == K_DOWN or evenement.key == K_DOWN):
down = True
elif evenement.type == KEYUP and (evenement.type == K_RIGHT or evenement.key == K_RIGHT):
right = False
elif evenement.type == KEYUP and (evenement.type == K_LEFT or evenement.key == K_LEFT):
left = False
elif evenement.type == KEYUP and (evenement.type == K_UP or evenement.key == K_UP):
up = False
elif evenement.type == KEYUP and (evenement.type == K_DOWN or evenement.key == K_DOWN):
down = False
if (up):
y -= snelheid
if (down):
y += snelheid
if (left):
x -= snelheid
if (right):
x += snelheid
window.blit(achtergrond, (0, 0))
window.blit(player, (x, y)) # Dit zorgt er voor dat de afbeelding word getoond
pygame.display.update() # Dit zorgt er voor dat ons scherm update
frames_per_seconden_klok.tick(frames_per_seconden) # Dit zorgt ervoor dat er beweging kan zijn
Voor afbeeldingen te gebruiken heb je ook een window nodig om de afbeelding er op te laten zien, zo maak je er een:
window_breedte = 500
window_hoogte = 500
window = pygame.display.set_mode((window_breedte, window_hoogte))
Om een afbeelding in je programma te gebruiken moet je eerst een map hebben waar al je afbeeldingen in staan. Die map moet naast het document van je programma staan. Je moet dan ook de afbeelding in je programma importeren, dat doe je zo:
player = pygame.image.load('Afbeeldingen/player.png').convert_alpha()
achtergrond = pygame.image.load('Afbeeldingen/achtergrond.jpg').convert_alpha()
Om een afbeelding in je programma te laten bewegen moet je ze een x en y toekenen. Daarom maak ik een variable x en y:
x = 0
y = 0
Deze code zorgt er voor als je op een knop duwt dat een bool dan true word
elif evenement.type == KEYDOWN and (evenement.type == K_RIGHT or evenement.key == K_RIGHT):
right = True
elif evenement.type == KEYDOWN and (evenement.type == K_LEFT or evenement.key == K_LEFT):
left = True
elif evenement.type == KEYDOWN and (evenement.type == K_UP or evenement.key == K_UP):
up = True
elif evenement.type == KEYDOWN and (evenement.type == K_DOWN or evenement.key == K_DOWN):
down = True
elif evenement.type == KEYUP and (evenement.type == K_RIGHT or evenement.key == K_RIGHT):
right = False
elif evenement.type == KEYUP and (evenement.type == K_LEFT or evenement.key == K_LEFT):
left = False
elif evenement.type == KEYUP and (evenement.type == K_UP or evenement.key == K_UP):
up = False
elif evenement.type == KEYUP and (evenement.type == K_DOWN or evenement.key == K_DOWN):
down = False
Als je een bool true is dan kan je de x en y veranderen van de speler, dat doe je zo:
if (up):
y -= snelheid
if (down):
y += snelheid
if (left):
x -= snelheid
if (right):
x += snelheid
Maar nu moet je nog wel de variabelen aan de afbeelding koppelen, dat doe je zo:
window.blit(achtergrond, (0, 0))
window.blit(player, (x, y)) # Dit zorgt er voor dat de afbeelding word getoond
Hier is een link naar de volgende les: Lijsten