Du verstehst den Ablauf Ereignisse → Zeichnen → Anzeigen → Tempo begrenzen. Dies wird in einer Spielschleife wiederholt. Im Unterschied zu unseren Textspielen wartet die Schleife nicht auf input().
| Code | Bedeutung |
|---|---|
pygame.init() |
Pygame vorbereiten |
display.set_mode((600, 450)) |
Ein Fenster mit Breite und Höhe in Pixeln öffnen |
event.get() |
Ereignisse wie Tastendruck oder Schliessen abholen |
fenster.fill(...) |
Den Hintergrund vor jedem Bild neu zeichnen |
draw.rect(...) |
Ein Rechteck mit Position und Grösse zeichnen |
display.flip() |
Das fertig gezeichnete Bild anzeigen |
uhr.tick(30) |
Die Schleife auf höchstens 30 Durchläufe pro Sekunde begrenzen |
Oben links ist (0, 0). x wächst nach rechts, y nach unten. Unser Feld besteht aus 24 Spalten und 18 Zeilen, eine Zelle ist 25 Pixel breit und hoch. Rasterposition (5, 8) wird zu Pixelposition (125, 200). Wir speichern später Rasterkoordinaten und multiplizieren erst beim Zeichnen mit ZELLE.
(5, 8) ist ein Tupel, ein festes Wertepaar. x, y = 5, 8 weist zwei Werte zu. Farben sind Dreiergruppen für Rot, Grün und Blau, jeweils von 0 bis 255. Grosse Variablennamen wie ZELLE kennzeichnen hier Einstellungen, die während einer Runde gleich bleiben.
(0, 0)?01_spielfenster.py mit dem vollständigen Startcode unten. Diesen Rahmen darfst du übernehmen.(10, 4) erscheint, und ändere die Rasterposition.Erkläre mir in diesem Pygame-Code die vier Argumente des Rechtecks:
(5 * ZELLE, 8 * ZELLE, ZELLE, ZELLE).
ZELLE ist 25. Nenne die Pixelposition und Grösse. Ändere den Code noch nicht.
Die Funktion main() enthält den Programmablauf. if __name__ == "__main__": startet sie, wenn du diese Datei ausführst. Beim Importieren für Prüfungen startet dadurch kein Fenster. Du musst diese beiden Rahmenzeilen zunächst nur wiedererkennen können.
(125, 200).(10, 4): Quadrat bei (250, 100).Quellen: Pygame-Ereignisse, Clock.tick.
Datei: beispiele/snake/01_spielfenster.py. Enthält den ursprünglichen Startzustand vor deinen Farb- und Positionsänderungen.
"""Etappe 1: Ein Fenster und ein Schlangenkopf auf einem Raster."""
import pygame
ZELLE = 25
SPALTEN = 24
ZEILEN = 18
def main():
pygame.init()
fenster = pygame.display.set_mode((SPALTEN * ZELLE, ZEILEN * ZELLE))
pygame.display.set_caption("Snake – mein erstes Fenster")
uhr = pygame.time.Clock()
laeuft = True
while laeuft:
# Ereignisse abholen, damit das Fenster auf Eingaben reagiert.
for ereignis in pygame.event.get():
if ereignis.type == pygame.QUIT:
laeuft = False
elif ereignis.type == pygame.KEYDOWN:
if ereignis.key == pygame.K_ESCAPE:
laeuft = False
fenster.fill((20, 25, 35))
pygame.draw.rect(fenster, (80, 220, 120), (5 * ZELLE, 8 * ZELLE, ZELLE, ZELLE))
pygame.display.flip()
uhr.tick(30)
pygame.quit()
if __name__ == "__main__":
main()