10.3 Vormen tekenen
De voorbeelden in dit hoofdstuk draaien niet in de online speeltuin. Een pygame-ce-programma schrijft zijn eigen game-loop, en die is in de browser niet meer te stoppen. Draai ze op je eigen computer, in Thonny of VS Code — zie installatie.
In pygame-ce teken je vormen met pygame.draw. Elke vorm heeft een scherm, een kleur en een positie nodig.
Een cirkel tekenen
import pygame
pygame.init()
scherm = pygame.display.set_mode((800, 600))
actief = True
while actief:
for event in pygame.event.get():
if event.type == pygame.QUIT:
actief = False
scherm.fill((30, 30, 30))
pygame.draw.circle(scherm, (255, 0, 0), (400, 300), 50)
pygame.display.flip()
pygame.quit()
pygame.draw.circle(scherm, (255, 0, 0), (400, 300), 50)
scherm- waar je tekent(255, 0, 0)- de kleur (rood)(400, 300)- het middelpunt (x, y)50- de straal
Let op: in pygame-ce begint (0, 0) linksboven, niet in het midden zoals bij coderius-play. De y-as gaat naar beneden in plaats van naar boven.
Een rechthoek tekenen
pygame.draw.rect(scherm, (0, 0, 255), (100, 200, 150, 80))
(0, 0, 255)- de kleur (blauw)(100, 200, 150, 80)- de rechthoek: (x, y, breedte, hoogte)
Een lijn tekenen
pygame.draw.line(scherm, (255, 255, 255), (0, 300), (800, 300), 3)
(255, 255, 255)- de kleur (wit)(0, 300)- startpunt(800, 300)- eindpunt3- dikte van de lijn
Opdracht 10.3.a: Meerdere vormen
Teken op een donkere achtergrond:
- Een gele cirkel linksboven
- Een groene rechthoek in het midden
- Een witte lijn onderaan het scherm
Klik hier voor een tip.
Alle drie de vormen teken je binnen de game-loop, ná scherm.fill(...) en vóór pygame.display.flip(). Anders overschrijft de achtergrond ze weer.
Klik hier voor de oplossing.
import pygame
pygame.init()
scherm = pygame.display.set_mode((800, 600))
actief = True
while actief:
for event in pygame.event.get():
if event.type == pygame.QUIT:
actief = False
scherm.fill((30, 30, 30))
pygame.draw.circle(scherm, (255, 255, 0), (100, 100), 40)
pygame.draw.rect(scherm, (0, 200, 0), (300, 250, 200, 100))
pygame.draw.line(scherm, (255, 255, 255), (0, 550), (800, 550), 3)
pygame.display.flip()
pygame.quit()
Opdracht 10.3.b: Een gezicht tekenen
Teken een simpel gezicht met:
- Een grote gele cirkel als hoofd
- Twee kleine zwarte cirkels als ogen
- Een rode lijn als mond
Klik hier voor een tip.
Een gezicht is gewoon drie cirkels en een lijn over elkaar heen. De volgorde bepaalt wat je ziet: het hoofd eerst, de ogen daarna.
Klik hier voor de oplossing.
import pygame
pygame.init()
scherm = pygame.display.set_mode((800, 600))
actief = True
while actief:
for event in pygame.event.get():
if event.type == pygame.QUIT:
actief = False
scherm.fill((30, 30, 30))
pygame.draw.circle(scherm, (255, 255, 0), (400, 300), 120)
pygame.draw.circle(scherm, (0, 0, 0), (360, 270), 15)
pygame.draw.circle(scherm, (0, 0, 0), (440, 270), 15)
pygame.draw.line(scherm, (255, 0, 0), (360, 350), (440, 350), 4)
pygame.display.flip()
pygame.quit()