Python Tutorial
- jetzt Python programmieren lernen

Space Invaders war gestern – Varroa Invaders selber programmieren ist heute!

Der Klassiker Space Invaders aus dem Jahr 1978 war als Automatenspiel in Japan so gefragt, dass 100-Yen-Münzen landesweit knapp wurden. Die Spielgeschichte ist simpel und das Spielen ist einfach nur Spaß. Außerirdische (Space) wollen die Erde überfallen (engl. invaders = Eindringlinge) und man als Held muss mit einem kleinen Geschütz die Invasion abwehren, die in Reihen immer schneller näher kommen. Zusätzlich hat man kleine Schilde, die während dem Spiel durch die nach unten fallenden Bomben immer mehr zerstört werden. Erreicht die Invasion den Verteidiger (oder wird der von einer Bombe getroffen) ist das Spiel verloren.

Was wollen wir in Python als Übungsspiel programmieren? Ähnlich dem Spielprinzip wie bei Space Invaders greifen wir in unserem Spiel nicht nach den Sternen, sondern stellen und einem realen Problem, mit dem jeder Imker kämpft: der Varroamilbe – dieser Schädling ist die Furcht jedes Imkers. Wenn wir es uns einen ähnlichen Schädling beim Menschen vorstellen: es wäre, als müsste man als Mensch mit einer fetten Ratte, die einen in den Rücken gebissen hat und seitdem dort festhängend Nahrung saugt, herumlaufen und trotzdem noch fröhlich seine Arbeit machen. Will man nicht haben und daher auf zum programmieren des „Varro Invaders“!

In der Realität geht der Imker mit diversen Mitteln gegen Varroa vor, was aber als Spiel nicht so lustig wäre. Daher müssen wie als Kampfbiene unseren Bienenstock geben die böse Varroamilbe (lat. Varroa destructor) verteidigen.

Space Invaders war gestern – heute ist Varroa Invaders
Space Invaders war gestern – heute ist Varroa Invaders

Im Gegensatz zu Space Invaders spielt sich unser Spielgeschehen von rechts nach links ab. Unsere Kampfbiene bewegst sich vor dem Bienenstock und kann einen Honigtropen abfeuern.

Die Schädlinge mit dem Namen Varroa kommen je nach Level in einer bestimmten Anzahl und wandern von hoch und runter. Jedes mal, wenn diese am Fensterrand angekommen sind, kommen diese dem Bienenstock näher.

Je nach Level sind es mehr Gegner und bewegen sich auch schneller.

Erreicht ein Gegner die Kampfbiene gibt es mehrere Möglichkeiten:

  • einfach Umsetzung: das Spiel ist verloren
  • anspruchsvoller: die Varroamilbe klebt sich an die Kampfbiene und diese wird schwerfälliger, was sich direkt in der Steuerung auswirkt. Ab 3 angeklebten Milben war es das für unsere tapfere Kampfbiene

Das zum prinzipiellen Spielablauf.

Was benötigen wir für unser Spiel:

  • das übliche Grundgerüst (aus https://www.python-lernen.de/grundgeruest-fuer-pygame.htm )
  • unsere animierte Biene ( https://www.python-lernen.de/animationen-erstellen.htm
  • unsere Gegner als Grafik (kommt im passenden Zeitpunkt bei der Umsetzung)
  • einen Honigtropfen (was auch sonst)
  • ein Hintergrundbild
  • eine Hintergrundmusik
  • einen Sound für das schießen
  • und einen Sound für das treffen
  • zusätzlich natürlich ein Glas deutscher Imkerhonig (wichtig: wenn auf einem Honigglas so ein Satz „aus EU- und Nicht-EU Ländern“ steht, dann stehen lassen. Wir wollen das reine Honigerlebnis, ohne das verschiedene zusammengerührt werden. Zusätzlicher „Funfact“: Honig ist das weltweit am meisten gefälschte Lebensmittel

Folgende Punkte setzen wir der Reihe nach um:

  • Grundgerüst übernehmen und unsere Spielfigur integrieren
  • Unsere Spielfigur über Tastatur bewegen (und Bewegungsradius festlegen)
  • unseren Feind einbauen
  • Bewegungsmechanik vom Feind integrieren
  • aus einem Feind viele Feinde machen
  • Ein Hintergrundbild hinzufügen
  • Geschosse (passenderweise Honigtropfen) einbauen
  • abschießen des Geschosses
  • Zusammenstoß zwischen Geschosse und Feind
  • mehr als 1 Feind: eine Invasion von Feinden
  • Punktestand anzeigen
  • Sounds & Hintergrundmusik
  • Game over
  • weitere Level einbauen

Wir haben also etwas zu tun - und los geht es:

Grundgerüst in Python für unser Spiel

Erstellen wir eine Python-Datei mit dem Namen „varroa-invaders.py“ und unserem Grundgerüst. Dieses können wir aus dem Kapitel https://www.python-lernen.de/grundgeruest-fuer-pygame.htm übernehmen (und sollte etwas beim Code nicht klar sein, kann man dort nachlesen):

# Importieren u. initialisieren der Pygame-Bibliothek
import pygame
from pygame.locals import *
pygame.init()

# Variablen/KONSTANTEN setzen
W, H = 800, 600
FPS  = 30
SCHWARZ = ( 0, 0, 0)
WEISS   = ( 255, 255, 255)

spielaktiv = True

# Definieren und Öffnen eines neuen Fensters
fenster = pygame.display.set_mode((W, H))
pygame.display.set_caption("Varroa Invaders")
clock = pygame.time.Clock()

# Schleife Hauptprogramm
while spielaktiv = False:
    # Überprüfen, ob Nutzer eine Aktion durchgeführt hat
    for event in pygame.event.get():
        # Beenden bei [ESC] oder [X]
        if event.type==QUIT or (event.type==KEYDOWN and event.key==K_ESCAPE):
            spielaktiv = False

    # Spiellogik

    # Spielfeld löschen
    fenster.fill(WEISS)

    # Spielfeld/figuren zeichnen

    # Fenster aktualisieren
    pygame.display.flip()
    clock.tick(FPS)

Und was wäre ein Spiel ohne eigene Spielerfigur. Das folgt im nächsten Kapitel.