Der leichte Einstieg Scratch programmieren
Faszination Coding Programmieren für Kinder
Für Fortgeschrittene Python Kurs

Pygame Tutorial in 5 Schritten

Veröffentlicht: . Geändert: .
Pygame Tutorial für Anfänger

Mit Pygame kannst Du Deine eigenen Spielideen detailliert in Code umsetzen. Es ist in der Coding-Sprache Python formuliert. Wenn Du wissen willst, welche anderen Sprachen es zum Coden gibt, dann schau mal bei Programmieren für Kinder rein! In diesem Tutorial dreht sich aber alles um Pygame und hier zeigen wir Dir Schritt für Schritt, wie Du Dein erstes Spiel erstellst.

Was ist Pygame?

Pygame ist ein Modul, welches zur Programmiersprache Python gehört und speziell für das Coden von Computerspielen entwickelt wurde. Aber was ist eigentlich ein Modul? Ein Modul kannst Du Dir wie einen Baukasten vorstellen, in dem alle Werkzeuge vorhanden sind, die Du benötigst. Da Pygame ein Modul für die Spielentwicklung ist, findest Du hier Möglichkeiten, Spielelemente wie z.B. geometrische Objekte (Kreise, Vierecke usw.), Bilder, Töne und Texte in Deine grafische Oberfläche auf Deinem Bildschirm zu bringen. Zudem lassen sich diese Spielelemente mittels Pygame dynamisch verändern, indem z.B. der Nutzer/Spieler mit diesen Objekten per Mausklick oder Tastendruck interagiert!

Wenn Du jetzt vielleicht denkst, dass das nur etwas für leidenschaftliche Gamer ist, dann liegst Du daneben! Denn Pygame war bereits Bestandteil einer Vorlesungsreihe an der Ludwig-Maximilians-Universität München. Zudem wird Pygame an der Universität Heidelberg auch für psychologische Experimente benutzt. Im Kurs Python für Kinder kannst Du außerdem viele weitere wunderbare Anwendungsmöglichkeiten der Programmiersprache kennenlernen. Wie die Coding-Sprache eigentlich aufgebaut ist, erfährst Du zudem im Artikel zur Python Syntax.

Pygame Tutorial in 5 Schritten

Da Pygame ein Baukasten im großen Baukastensystem von Python ist, musst Du zunächst Python herunterladen und installieren, um mit der Spielentwicklung beginnen zu können. Wenn Du noch nicht weißt, wie das geht, dann schau mal in den Artikel Python Download rein. Zudem benötigst Du eine Entwicklungsumgebung, in der Du Deinen Code eingeben kannst. Das Programm PyCharm ist dabei bestens geeignet. Eine weitere bekannte Umgebung ist übrigens Python IDLE.

1. Pygame installieren, importieren & initialisieren

Wenn Du Deine Python Entwicklungsumgebung aufgesetzt hast, kannst Du nun Pygame installieren. Dafür klickst Du ganz oben in der Menüleiste auf PyCharm und dann auf „Preferences…“ wie in der folgenden Abbildung veranschaulicht.

Pygame: Preferences auswählen
Abb. 1: Um Pygame zu installieren, zuerst „Preferences…“ aufrufen

Anschließend musst Du in dem sich öffnenden Fenster in der linken Menüleiste Dein Projekt und anschließend „Python Interpreter“ auswählen. Nun klickst Du unten links auf das kleine „Plus“-Symbol. Wie das aussieht, erfährst Du dabei in der folgenden Grafik:

Neues Pygame Modul einrichten
Abb. 2: Pygame Modul installieren

Zuletzt gibst Du in dem sich neu öffnenden Fenster ganz oben in der Suchleiste den Begriff „pygame“ ein und klickst ganz unten auf den Button „Install Package“:

Pygame einrichten
Abb. 3: Pygame einrichten

Nach kurzer Ladezeit ist die Installation erfolgreich abgeschlossen! Jetzt musst Du Pygame in die „python-script“-Datei (Endung „ .py “) importieren, in der Du Dein Spiel anschließend programmieren möchtest. Der Befehl zum Importieren lautet „import pygame“. Wir importieren gleich noch zwei weitere Module über die Befehle „import random“ und „import time“. Wofür Du diese Module brauchst, wirst Du in diesem Tutorial noch lernen. Du hast jetzt schon erfahren, dass man mehrere Module in einem Programm importieren und nutzen kann!

Zuletzt musst Du Pygame noch initialisieren mit dem Befehl „pygame.init()“. Dadurch aktivierst Du es in Deinem Programm, damit Du es wirklich nutzen kannst. Die runden Klammern hinter „init“ deuten darauf hin, dass es sich dabei um eine Methode handelt. Eine Methode kannst Du Dir dabei wie einen Aufgabenzettel vorstellen. Dieser wird immer wieder abgearbeitet, sobald Du die Methode aufrufst. Der Punkt zwischen „pygame“ und „init()“ zeigt eindeutig, dass die Methode aus dem Modul Pygame stammt. Unser Programm sieht bisher so aus:

Module importieren
Abb. 4: Module importieren und initialisieren

2. Fenster erzeugen

Nun wollen wir mittels Pygame ein Fenster erzeugen. Durch dieses Fenster können Spielelemente wie z.B. Rechtecke und Kreise sichtbar gemacht werden. Ein Fenster wird dabei mit dem Befehl „pygame.display.set_mode((640, 480))“ erstellt. Hierbei ist „display“ wie eine Art spezielles Werkzeugfach in unserem Baukasten „pygame“. Der Punkt dazwischen deutet zudem wieder die Zugehörigkeit an. Die Methode „set_mode()“ stammt also aus dem Werkzeugfach „display“. Die Zahlen „(640, 480)“ in der zusätzlichen Klammer sind sogenannte Parameter. Sie legen in diesem Fall die Breite und Höhe unseres Fensters fest. Parameter sind relativ frei wählbar, d.h. Du kannst für Dein Spiel deshalb auch andere Werte als 640 Pixel für die Breite und 480 Pixel für die Höhe nehmen. Zudem ist es hilfreich das Fenster in Python Variablen zu speichern, da wir im weiteren Verlauf Operationen auf dieses Fenster anwenden werden. Mehr über Variablen und Operationen erfährst Du zudem im Artikel Python Datentypen.

Achtung:

Zeichenketten, sogenannte „strings“, werden in Python immer mit einfachen oder doppelten Anführungszeichen gekennzeichnet. Die Funktion print(„Thomas“) oder print(‚Thomas‘) gibt beispielsweise den Namen Thomas als Text aus.

Zuletzt wollen wir unserem Fenster noch einen Titel geben, der ganz oben im Fenster erscheinen wird. Dies erreichen wir dabei mit dem Befehl „pygame.display.set_caption(„Unser erstes Pygame-Spiel“)“. Hierbei ist „Unser erstes Pygame-Spiel“ wiederum ein frei gewählter Parameter. Dein Code sollte jetzt so aussehen:

Fenster erzeugen
Abb. 5: Neues Fenster erzeugen

3. Farbe ins Spiel bringen

Was wäre ein Spiel ohne Farben? Das wäre wie eine Pizza ohne Teig: Unvorstellbar! Daher wollen wir als Nächstes Farben für unser Spiel kreieren. Jede Farbe lässt sich dabei aus einem Anteil roter, grüner und blauvioletter Farbe zusammensetzen. Dieses sogenannte RGB-System (Rot-Grün-Blauviolett-System) baut auf der additiven Farbmischung auf. Jede Farbe wird deshalb durch einen Rotwert, einen Grünwert und einen Blauviolettwert festgelegt. Jeder dieser drei Farbwerte wird durch ein Byte (8 Bit) dargestellt, also einer Zahl zwischen 0 und 255 (vgl. Bühler/Schlaich/Sinner, 2018). Von diesem RGB-System machen wir in unserem Spiel Gebrauch und definieren z.B. drei Farben:

Farben festlegen
Abb. 6: Farben festlegen

Zudem legen wir zwei Listen an, die wir für unser Spiel benötigen werden. In Listen, sogenannten „arrays“, kannst Du verschiedene Daten zusammenfassen und später wieder darauf zurückgreifen. Wir legen eine Liste für unsere Farbwerte an, die wir in den Variablen „blau“, „rot“ und „orange“ gespeichert haben. In einer zweiten Liste speichern wir die Namen der Farben als Zeichenketten („strings“), da wir diese später auch als Text in unserem Spiel ausgeben möchten. Dein Code sollte jetzt so aussehen:

Listen anlegen
Abb. 7: Listen anlegen

Listen werden also mit eckigen Klammern erzeugt und die einzelnen Daten (explizit oder als Variablen) mit Kommata getrennt.

4. Text & Zufall kreieren

Eine Schrift wird mit dem Befehl „pygame.font.SysFont(‚Comic Sans MS‘, 40)“ erstellt. Die Werte in der Klammer sind wieder frei wählbar, jedoch muss zunächst mittels einer Zeichenkette die Schriftart und anschließend mit einer Zahl die Schriftgröße festgelegt werden. Wir speichern diese Schrift anschließend in der Variable „schrift“. Nun können wir mit dieser Schrift konkreten Text erzeugen, indem wir den Befehl „schrift.render(‚0 Punkte‘, False, (0, 0, 0))“ aufrufen. Hierbei ist „0 Punkte“ eine frei wählbare Zeichenkette und „False“ schaltet die Kantenglättung aus um den Comic-Effekt der Schriftart zu erhalten. Mit „(0, 0, 0)“ wird die Schriftfarbe festgelegt, in diesem Fall erhalten wir schwarze Schrift.

Ein weiteres wichtiges Element für ein gutes Spiel ist zudem der Zufall. Denn ohne Zufall ist das Spielgeschehen vorhersehbar und wird damit auf Dauer ziemlich langweilig! Für unser Spiel reicht es schon aus die Zahlen 0, 1 und 2 zufällig zu erzeugen. Dies geht ganz einfach mit dem Befehl „random.randrange(0, 3, 1)“. Hier ist „0“ die untere Grenze des Zufalls (inklusive) und „3“ die obere Grenze (exklusive) und „1“ die Schrittweite. Dein Code könnte jetzt so aussehen:

Pygame: Texte erzeugen
Abb. 8: Texte und Zufallszahlen für Pygame-Spiel erzeugen

Der Witz an unserem Spiel wird sein, dass wir den Farbnamen und den Farbwert jeweils zufällig aus unseren Listen auswählen. Dadurch kann es z.B. passieren, dass der Farbname „rot“ als Text in blauer Farbe dargestellt wird. Um das Spiel noch spannender zu gestalten, wählen wir die Hintergrundfarbe unseres Fensters auch zufällig aus. Deine Aufgabe als Spieler besteht darin zu entscheiden, ob z.B. der Farbname „rot“ (nicht sein zufälliger Farbwert!) mit der Farbe des Hintergrundes übereinstimmt! Für richtige Entscheidungen gibt es Pluspunkte und für falsche Entscheidungen Minuspunkte. Das Ganze soll natürlich auf Zeit gehen, damit gutes Tempo belohnt wird.

5. Hauptschleife erstellen

Das Hauptprogramm in Pygame wird mithilfe einer Schleife geschrieben. Wenn Du noch nicht weißt, was eine Schleife ist, dann schau mal in den Artikel Python For Schleife hinein. Bevor wir mit der Hauptschleife unseres Spiels beginnen, müssen wir zunächst noch einige Startwerte, wie z.B. die Startzeit, in einer Variablen speichern. Das geht übrigens über den Befehl „time.time()“. Dein Code könnte jetzt folgendermaßen aussehen:

Pygame: Startvorkehrungen treffen
Abb. 9: Startvorkehrungen für die Pygame-Hauptschleife eingeben

Wie Du bestimmt schon weißt, kann man jeden Befehl in normaler Sprache kommentieren, indem man das „Hash“-Symbol vor den Kommentar setzt. Dadurch wird es Dir erheblich erleichtert den obigen Code zu verstehen. Nun können wir endlich mit der Hauptschleife unseres Spiels beginnen! Es gibt verschiedene Typen von Schleifen, nicht nur „for“-Schleifen. Wir wählen als Hauptschleife eine „while“-Schleife. Diese Schleife wird so oft durchlaufen, bis die Variable hinter dem Signalwort „while“ nicht mehr den Wert „True“ besitzt, also gleich „False“ ist.

Innerhalb der Hauptschleife programmieren wir noch eine „for“-Schleife, welche alle Aktivitäten des Spielers (z.B. Mausklicks) erfasst. Die linke Maustaste soll bei unserem Spiel betätigt werden, wenn die Hintergrundfarbe mit dem Farbnamen übereinstimmt. Andernfalls soll die rechte Maustaste gedrückt werden. Nach jedem Klick müssen natürlich alle Werte aktualisiert werden wie z.B. der Punktestand. Unser Code sieht jetzt so aus:

Pygame Hauptschleife
Abb. 10: Hauptschleife des Pygame-Spiels (1. Teil)

Nachdem wir die Aktivitäten des Spielers abgefragt und verarbeitet haben, müssen wir zunächst die verbleibende Restzeit eines Spieldurchgangs bestimmen. Anschließend sollte bei jedem Durchlauf der Hauptschleife unser Spielfeld bereinigt werden, um danach die Spielelemente mit ihren neuen Eigenschaften zu zeichnen. Zuletzt muss das Fenster unseres Spiels noch aktualisiert werden. Der Rest unseres Programms sieht jetzt so aus:

Hauptschleife des Pygame Spiels
Abb. 11: Hauptschleife des Pygame-Spiels (2. Teil)

Befehle der Pygame-Hauptschleife

Damit haben wir es geschafft! Unser erstes Pygame-Spiel ist (inklusive Kommentare) genau 100 Code-Zeilen lang! Natürlich ist das nicht wenig, aber an diese Komplexität muss man sich als Spiele-Programmierer gewöhnen. Die folgende Tabelle fasst die wichtigsten Befehle unserer Hauptschleife samt ihrer Bedeutung zusammen:

Tabelle 1: Wichtige Befehle der Hauptschleife in Pygame

Code-Zeile(n)Code-BefehlBedeutung
59pygame.event.get()Liste aller Nutzeraktivitäten
60,62event.typeArt der Nutzeraktivität (z.B. Mausklick)
62pygame.MOUSEBUTTONDOWNEvent: Maus gedrückt
63,65event.buttoneine Zahl, die angibt, welche Maustaste gedrückt wurde (1 = linke Maustaste, 3 = rechte Maustaste)
85fenster.fill()bereinigt/färbt das Spielfeld
88–91fenster.blit()zeichnet Spielelemente auf das Spielfeld
94pygame.display.flip()aktualisiert das Spielfeld
97clock.tick()Refresh-Zeiten festlegen (z.B. 60 fps)

Mit Konzentration und etwas Durchhaltevermögen kannst Du mit Pygame in 5 Schritten Dein erstes Spiel entwickeln. Wenn Dir der Anfang schwerfallen sollte, ist das völlig normal. Pygame-Spiele werden in der Hochsprache Python formuliert, die natürlich auch von Erwachsenen verwendet wird. Wenn Du dieses Tutorial weitestgehend verstanden hast, kannst Du daher echt stolz auf Dich sein! Noch Lust auf mehr? Dann sieh Dir den Artikel zu Python Django an.

Literatur

Bühler, Peter/ Schlaich, Patrick/ Sinner, Dominik (2018): Digitale Farbe – Farbgestaltung – Colormanagement – Farbverarbeitung, Berlin – Heidelberg.

Rodriguez, Manuel (2016): Einführung in die Robotik.

FAQs zu Pygame

Ab welchem Alter kann man mit Pygame Spiele entwickeln?

Diese Frage lässt sich so allgemein nicht beantworten, da die Entwicklung individuell ist. Jedoch sollten Anfänger ab ca. 10 Jahren mit etwas Hilfe Möglichkeiten haben ihre ersten Pygame-Spiele zu programmieren.

Gibt es Alternativen zu Pygame für sehr junge Einsteiger?

Ja, mit Scratch können Kids schon ab ca. 6 Jahren ihre ersten Spiele erstellen. Diese Programmierumgebung ist visuell ansprechend und intuitiv.

Was sind die Vorteile von Pygame?

Da Pygame-Spiele mittels der Hochsprache Python programmiert werden, hast Du maximalen Gestaltungsspielraum. Zudem lernst Du ganz nebenbei coden, was für Deinen späteren Beruf von großem Nutzen sein kann!

Was eignet sich als Vorbereitung zur Arbeit mit Pygame?

Du solltest Dich zunächst mit der Programmiersprache Python vertraut machen. Wenn Du Fragen zu dieser Coding-Sprache hast, dann sieh Dir die Artikel in unserem Wissensmagazin an. Dort findest Du Informationen zu vielen Themen wie zum Beispiel Python Anaconda. Außerdem stehen wir Dir in unseren Kursen mit Rat und Tat zur Seite.

Kann man mit Pygame auch 3D-Spiele entwickeln?

Pygame wurde für 2D-Spiele entwickelt (vgl. Rodriguez, 2016). Dies schließt 3D-Spiele zwar nicht völlig aus, allerdings gibt es viel bessere 3D-Engines wie z.B. Panda3D.

Anderen hat auch das noch gefallen