Coördinaten in Pygame Zero

Pixels

Een scherm is een raster van kleine gekleurde puntjes: pixels. Ons spelvenster is 600 pixels breed en 400 pixels hoog: 240.000 pixels in totaal.

Elk pixel heeft een adres: (x, y). Zo weet Pygame Zero exact waar het iets moet tekenen.

Waar zit (0, 0)?

In wiskundige grafieken zit het nulpunt (0, 0) linksonder. In Pygame Zero zit (0, 0) linksboven.

  • x loopt naar rechts: hoe groter x, hoe verder naar rechts.
  • y loopt naar beneden: hoe groter y, hoe lager op het scherm.

WiskundePygame Zero

(0, 0)xyy ↑ (omhoog)(0, 0)xyy ↓ naar beneden!

Ster en basket

In Catch the Stars start de ster op (300, 30): horizontaal in het midden (x = 300 = helft van 600), vlak bovenaan (y = 30). De basket staat op (300, 370): ook in het midden, bijna helemaal onderaan.

Pygame Zero scherm met ster en basket gemarkeerd

Als je schrijft:

star.y = star.y + 3

Beweeg je de ster 3 pixels naar beneden per frame, want een grotere y-waarde betekent lager op het scherm.

Positie van een Actor

actor.pos is het middenpunt van de afbeelding, niet de hoek. Je kunt ook de randen opvragen:

actor.posactor.topactor.bottomactor.leftactor.right
EigenschapBetekenis
actor.leftlinkerrand van de afbeelding
actor.rightrechterrand van de afbeelding
actor.topbovenrand van de afbeelding
actor.bottomonderrand van de afbeelding

Zo check je of de basket het scherm uitloopt:

if basket.right > WIDTH:
    basket.x = WIDTH - basket.width / 2

Hoekpunten van het scherm

Hoekpuntxy
Linksboven00
Rechtsboven6000
Linksonder0400
Rechtsonder600400
Midden300200

Verdere lezing: “Pixel Coordinates and Pygame Objects” door albro