8.1 Je eerste venster
Met coderius-play heb je geleerd om snel games te maken. Maar wat als je meer controle wilt? Dan kun je pygame-ce gebruiken. Dat is de bibliotheek waar coderius-play bovenop gebouwd is.
Een venster openen
import pygame
pygame.init()
scherm = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Mijn eerste pygame-ce programma")
actief = True
while actief:
for event in pygame.event.get():
if event.type == pygame.QUIT:
actief = False
pygame.quit()
Je zou nu een leeg venster moeten zien met de titel "Mijn eerste pygame-ce programma" en een afmeting van 800 bij 600 pixels.
Wat gebeurt hier?
pygame.init()
Start pygame op. Dit moet je altijd als eerste doen.
scherm = pygame.display.set_mode((800, 600))
Maakt een venster van 800 pixels breed en 600 pixels hoog.
pygame.display.set_caption("Mijn eerste pygame-ce programma")
Geeft het venster een titel.
while actief:
Dit is de game loop. Zolang actief True is, blijft het programma draaien. Elk spel in pygame-ce heeft een game loop.
for event in pygame.event.get():
if event.type == pygame.QUIT:
actief = False
Hier luisteren we naar gebeurtenissen. Als je op het kruisje klikt, stopt het programma.
pygame.quit()
Sluit pygame netjes af.
Er gaat iets mis?
Als je pygame.init() vergeet, krijg je een foutmelding zoals:
pygame.error: video system not initialized
De oplossing: zorg dat pygame.init() altijd de eerste regel is na import pygame.
Een andere veelgemaakte fout is de game loop vergeten. Zonder de while-loop opent het venster en sluit het meteen weer!
Opdracht 8.1.a: Venstergrootte aanpassen
Maak een venster dat:
- 400 bij 400 pixels groot is
- De titel "Mijn spel" heeft
Klik hier voor de oplossing!
import pygame
pygame.init()
scherm = pygame.display.set_mode((400, 400))
pygame.display.set_caption("Mijn spel")
actief = True
while actief:
for event in pygame.event.get():
if event.type == pygame.QUIT:
actief = False
pygame.quit()
Na het uitvoeren van deze code, zou je een leeg venster moeten zien met de titel "Mijn spel" en afmetingen van 400 bij 400 pixels.