Les 17

Input gebruiken
Afbeeldingen

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