Einführung
In diesem Kurs programmieren wir gemeinsam ein FlappyBird-Spiel! Du lernst dabei wichtige Konzepte der Spieleprogrammierung kennen:
- Grafiken und Animationen mit Pygame
- Spielschleifen und Events
- Kollisionserkennung
- Punktezählung und Game Over
Projekt Setup
1. Projektordner erstellen
Öffne PowerShell und erstelle ein neues Projekt:
cd C:\MeinePythonProjekte
uv init flappybird
cd flappybird
2. Pygame installieren
Wir brauchen die Pygame-Bibliothek für unser Spiel:
uv add pygame
3. Projekt in VS Code öffnen
code .
Schritt 1: Grundgerüst erstellen
Erstelle eine neue Datei flappybird.py und
füge folgenden Code ein:
Was macht dieser Code?
pygame.init()- Startet Pygame-
bildschirm- Unser Spielfenster (400x600 Pixel) -
while laeuft:- Die Hauptspielschleife, die 60x pro Sekunde läuft -
pygame.QUIT- Prüft, ob das Fenster geschlossen wurde
Teste das Programm
uv run python flappybird.py
Du solltest ein blaues Fenster sehen!
Schritt 2: Vogel hinzufügen
Jetzt fügen wir unseren Vogel hinzu, der durch Schwerkraft fällt und springen kann:
📄 Code ansehen: flappybird_schritt2.pyDie Vogel-Klasse
Unser Vogel hat folgende Eigenschaften:
-
x, y- Position auf dem Bildschirm radius- Größe des Vogels-
geschwindigkeit_y- Wie schnell er fällt/steigt -
schwerkraft- Zieht den Vogel nach unten -
sprungkraft- Wie stark der Vogel springt
Methoden verstehen
-
springen()- Wird bei Leertaste aufgerufen -
bewegen()- Aktualisiert Position (Schwerkraft wirkt) -
zeichnen()- Malt den Vogel auf den Bildschirm
Schritt 3: Rohre hinzufügen
Zeit für Hindernisse! Wir fügen die grünen Rohre hinzu:
📄 Code ansehen: flappybird_schritt3.pyDie Rohr-Klasse
Jedes Rohr besteht aus:
- Einem oberen Teil (von oben)
- Einem unteren Teil (von unten)
- Einer Lücke dazwischen (wo der Vogel durchfliegen kann)
Rohr-Verwaltung
# Neue Rohre alle 1.5 Sekunden
if rohr_timer > 90: # 90 Frames bei 60 FPS = 1.5 Sekunden
rohre.append(Rohr(BREITE))
rohr_timer = 0
Schritt 4: Kollision und Punkte
Jetzt wird es spannend - wir fügen Kollisionserkennung und Punktezählung hinzu:
📄 Code ansehen: flappybird_schritt4.pyKollisionserkennung
Wir prüfen, ob der Vogel ein Rohr berührt:
def kollision(self, vogel):
vogel_rect = vogel.get_rect()
oberes_rohr = pygame.Rect(...)
unteres_rohr = pygame.Rect(...)
return vogel_rect.colliderect(oberes_rohr) or vogel_rect.colliderect(unteres_rohr)
Punkte zählen
Ein Punkt wird vergeben, wenn der Vogel ein Rohr erfolgreich passiert:
if rohr.punkt_erzielt(vogel):
punkte += 1
Game Over und Neustart
-
Bei Kollision:
game_over = True - Leertaste drücken für Neustart
- Alle Variablen werden zurückgesetzt
Das finale Spiel
Die finale Version enthält viele Verbesserungen:
📄 Code ansehen: flappybird_final.pyNeue Features
- 🎨 Verbesserte Grafik mit Schatten
- ☁️ Animierte Wolken im Hintergrund
- 🏆 Highscore-System
- 🎮 Startbildschirm
- 🦅 Flügelanimation beim Springen
- 🌱 Boden mit Gras
- 📐 Vogel neigt sich beim Fliegen
🎉 Geschafft!
Du hast dein eigenes FlappyBird-Spiel programmiert! Probiere es aus und versuche deinen Highscore zu schlagen!
Eigene Ideen umsetzen
Herausforderungen für dich:
- 🎨 Ändere die Farben des Vogels
-
⚡ Mache das Spiel schneller (erhöhe
self.geschwindigkeit) -
🕳️ Verändere die Lückengröße
(
self.luecke) - 🌟 Füge Power-Ups hinzu (z.B. Unverwundbarkeit)
-
🎵 Füge Soundeffekte hinzu (mit
pygame.mixer) - 🖼️ Lade echte Bilder statt Formen zu zeichnen
Sounds hinzufügen (Beispiel)
# Am Anfang
pygame.mixer.init()
sprung_sound = pygame.mixer.Sound("sprung.wav")
punkt_sound = pygame.mixer.Sound("punkt.wav")
# Beim Springen
def springen(self):
self.geschwindigkeit_y = self.sprungkraft
sprung_sound.play()
# Bei Punkt
if rohr.punkt_erzielt(vogel):
punkte += 1
punkt_sound.play()
Tipps und Tricks
Probleme lösen
Das Spiel läuft zu langsam:
-
Stelle sicher, dass
uhr.tick(60)vorhanden ist - Reduziere die Anzahl der Wolken
Der Vogel bewegt sich komisch:
-
Überprüfe die Werte für
schwerkraftundsprungkraft - Kleinere Werte = langsamere Bewegung
Pygame findet die Module nicht:
uv sync
uv run python flappybird.py
Was hast du gelernt?
Programmierkonzepte
- ✅ Klassen und Objekte: Vogel und Rohr sind Klassen
- ✅ Spielschleife: Update → Zeichnen → Wiederholen
- ✅ Event-Handling: Tastatureingaben verarbeiten
- ✅ Kollisionserkennung: Rechteck-Überschneidungen prüfen
- ✅ Listen: Mehrere Rohre verwalten
- ✅ Zufallszahlen: Rohrhöhen zufällig generieren
- ✅ Animation: Bewegung durch Position-Updates
Bereit für den nächsten Schritt?
Super! Im nächsten Kurs bringen wir dein Spiel ins Internet, damit deine Freunde es spielen können!
Weiter zu Kurs 3: Web-Export →