Unterrichtsbaustein · Detail

Space Invaders: Verteidigung gegen die Formation

Der Baustein führt von einer kleinen, lauffähigen Spielbaustelle zu einem strukturierten Space-Invaders-Projekt. Im Mittelpunkt stehen der schrittweise Aufbau von Steuerung, Gegnerdaten, Trefferlogik, Punktestand, Lebenssystem, Wellenstruktur und Neustart.

Zeit 90 min
Format KI-Coding
Technik frameCraft
Online testen Demo
Vorschaubild: Space Invaders: Verteidigung gegen die Formation

BuildFromZero mit KI-Coding

Strukturierte Code-Entwicklung aus einer kleinen Startbasis

Dieser Baustein nutzt KI-Coding als kontextbewusste Unterstützung für die Weiterentwicklung eines bestehenden Projektstands. Ausgangspunkt ist kein fertiges Spiel, sondern eine minimale, lauffähige Spielbaustelle mit Raumschiff, Formation-Markierung, Statusanzeige und vorbereiteten Eingaben.

Die Aufgaben führen schrittweise von visuellen Ergänzungen über Steuerung und Szenenwerte bis zu Schusslogik, Gegnerformation, Kollisionen, Punkten, Leben, Wellen und Neustart. Damit wird der Programmierprozess als nachvollziehbare Abfolge kleiner Änderungen sichtbar, die jeweils getestet und fachlich eingeordnet werden können.

Für den Unterricht unterstützt diese Struktur eine transparente Arbeit mit KI-generierten Änderungen: Prompts, Codeanpassungen und Versionen bleiben an konkrete Teilziele gebunden. Der Schwerpunkt liegt auf verständlicher Code-Entwicklung, gezielten Erweiterungen und direkt überprüfbaren Zwischenergebnissen.

Didaktische Einordnung

Der Baustein wird fachlich und unterrichtspraktisch kompakt eingeordnet.

Fachliche Zielsetzung

Im Zentrum steht der Aufbau eines einfachen 2D-Spiels aus klar getrennten Codebestandteilen: Szene, Figuren, Eingaben, Regeln und Zustände. Die fachliche Leistung besteht darin, Spielmechaniken nicht als fertiges Gesamtprodukt zu übernehmen, sondern über Datenstrukturen, Zustandswerte und wiederkehrende Regeln schrittweise zu modellieren und zu implementieren.

Kompetenzentwicklung

  • Strukturierung: Der Projektcode wird in Aufbau, Hilfsfunktionen, Szenenwerte und Spielregeln gegliedert.
  • Modellierung: Gegner, Schuss, Punkte, Leben und Wellen werden als Daten und Zustände abgebildet.
  • Algorithmisches Denken: Bewegung, Randprüfung, Kollision und Statuswechsel werden als regelbasierte Abläufe umgesetzt.
  • Debugging und Iteration: Jede Erweiterung bleibt klein genug, um unmittelbar geprüft und gezielt korrigiert zu werden.

Unterrichtlicher Mehrwert

  • Der Baustein bietet eine klare Progression von visueller Orientierung bis zu vollständigen Spielzuständen.
  • Die Zerlegung in kleine Arbeitsschritte erleichtert Ergebnissicherung und Zwischenreflexion.
  • Erweiterungen wie Geschwindigkeit, Wellen oder Neustart ermöglichen Differenzierung innerhalb desselben Projektkontexts.

Ablauf der Unterrichtseinheit

Die Aufgaben werden in der Reihenfolge des JSON dargestellt und inhaltlich kompakt zusammengefasst.

1

Spielfeld lesbarer machen

Die Startszene wird um eine sichtbare Verteidigungslinie am unteren Spielfeldrand ergänzt. Dadurch erhält der Spielerbereich eine klare räumliche Orientierung, ohne bereits Spielregeln zu verändern.

2

Raumschiff als Spielerfigur verbessern

Die vorhandene Verteidigerfigur wird visuell eindeutiger gestaltet. Die Änderung bleibt auf die Darstellung beschränkt und trennt damit Gestaltung bewusst von Steuerung und Spiellogik.

3

Links-Rechts-Bewegung vorbereiten

Die vorbereiteten Eingaben werden erstmals mit einer echten horizontalen Bewegung verbunden. Zusätzlich wird die Position begrenzt, damit das Raumschiff innerhalb des Fensters bleibt.

4

Bewegungsgeschwindigkeit als Szenenwert

Die feste Bewegungszahl wird durch einen Szenenwert ersetzt. Dadurch wird sichtbar, wie Spielparameter aus der Logik herausgelöst und später leichter angepasst werden können.

5

Baustellenregel in Spielregel umwandeln

Die bisherige Statusregel wird bereinigt, damit sie nicht mehr dauerhaft Meldungen überschreibt. Die vorhandene Bewegung bleibt erhalten und die Regel wird als Ort für weitere Spiellogik stabilisiert.

6

Schussfigur vorbereiten

Eine einzelne Schussfigur wird angelegt und zunächst außerhalb des sichtbaren Fensters platziert. Damit entsteht die Struktur für späteres Feuern, ohne bereits Auslöse- oder Fluglogik einzubauen.

7

Schuss-Start entprellen

Ein Merker hält fest, ob die Feuertaste bereits gedrückt war. So wird vorbereitet, dass ein Tastendruck später nur eine einzelne Aktion auslöst und nicht in jedem Frame erneut verarbeitet wird.

8

Schuss ausloesen

Der vorbereitete Schuss startet bei neu erkannter Feueraktion an der Position des Raumschiffs. Es wird weiterhin nur eine Schussfigur verwendet, wodurch Ressourcen und Zustand klar kontrolliert bleiben.

9

Schuss nach oben bewegen

Ein aktiver Schuss bewegt sich nach oben und wird beim Verlassen des Spielfelds zurückgesetzt. Damit wird ein einfacher Lebenszyklus eines Spielobjekts umgesetzt.

10

Gegnerdaten als Liste planen

Die Gegnerformation wird zunächst als Liste aus Namen und Positionen vorbereitet. Noch entstehen keine Gegnerfiguren, sodass die Trennung zwischen Datenmodell und Darstellung deutlich bleibt.

11

Gegnerformation anzeigen

Aus den vorbereiteten Startdaten werden sichtbare Gegnerfiguren erzeugt. Namen, Positionen und Tags werden konsistent übernommen, damit spätere Regeln auf die Formation zugreifen können.

12

Gegner-Aktivstatus festlegen

Eine separate Liste hält fest, welche Gegner aktuell noch aktiv sind. Damit wird zwischen allen angelegten Gegnern und den noch beteiligten Gegnern unterschieden.

13

Trefferstruktur ergaenzen

Eine Kollisionsreaktion zwischen Schuss und Gegner wird ergänzt. Ein gültiger Treffer entfernt den Gegner aus der aktiven Liste, verschiebt ihn aus dem Sichtbereich und setzt den Schuss zurück.

14

Punkte zaehlen

Der Punktestand wird bei einem gültigen Treffer genau einmal erhöht. Die Berechnung bleibt zunächst von der Anzeige getrennt, damit Datenänderung und Darstellung getrennt nachvollziehbar bleiben.

15

Punkte im HUD anzeigen

Der Punktestand wird über ein UI-Element sichtbar gemacht und an den Szenenwert gebunden. Damit wird der Zusammenhang zwischen internem Zustand und Bildschirmrückmeldung hergestellt.

16

Gegner langsam bewegen

Aktive Gegner bewegen sich langsam seitlich. Die Bewegung nutzt eigene Szenenwerte für Richtung und Tempo und bleibt auf die aktuell aktiven Gegner beschränkt.

17

Randwechsel fuer die Formation

Beim Erreichen des Spielfeldrands wechselt die Formation ihre Richtung und rückt nach unten. Die Prüfung erfolgt so, dass der Richtungswechsel nicht mehrfach im selben Frame ausgelöst wird.

18

Formation sicher zurücksetzen

Eine Hilfsfunktion setzt alle Gegner auf ihre Startpositionen zurück und stellt die aktive Gegnerliste wieder her. Die Funktion erzeugt keine neuen Figuren und unterstützt spätere Wellen- und Neustartlogik.

19

Leben und Gefahr einfuehren

Wenn aktive Gegner zu tief kommen, wird ein Leben abgezogen und die Formation zurückgesetzt. Der Schusszustand wird ebenfalls bereinigt, damit jede Gefahrensituation eindeutig verarbeitet wird.

20

Leben im HUD anzeigen

Die verbleibenden Leben werden als eigener HUD-Wert sichtbar. Die Anzeige ist vom Titel und vom Punktestand getrennt platziert, damit unterschiedliche Spielinformationen klar unterscheidbar bleiben.

21

Neue Welle starten

Sind alle Gegner besiegt, wird die Welle erhöht und die Formation über die Rücksetzfunktion neu vorbereitet. Punkte und Leben bleiben erhalten, sodass ein fortlaufender Spielverlauf entsteht.

22

Game Over ohne Neustart

Bei aufgebrauchten Leben wird ein Game-Over-Zustand gesetzt. Normale Spielanteile wie Bewegung, Schuss, Gegnerbewegung und neue Wellen werden in diesem Zustand nicht weitergeführt.

23

Neustart mit Taste und Touch

Nach Game Over wird eine entprellte Neustartaktion ergänzt. Punkte, Leben, Welle, Spielerposition, Schuss und Formation werden konsistent auf einen Startzustand zurückgesetzt.

Codeausschnitt

Der Ausschnitt zeigt die Trennung von Szenenwerten, Zugriffshilfen und wiederkehrender Regel als strukturellen Kern des Bausteins.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
class Zugriff:
    @staticmethod
    def figur(ctx, name):
        return ctx.E(name)
    @staticmethod
    def wert(ctx, name, standard=None):
        return ctx.vars.get(name, standard)
    @staticmethod
    def aktion_aktiv(ctx, name):
        return ctx.down(name)
SZENE('hauptszene', punkte=0, leben=3,
      status='Baustelle: bereit zum Erweitern',
      gegner_namen=[], schuss_aktiv=False, welle=1)
def baustellen_regel(ctx):
    spieler = Zugriff.figur(ctx, 'verteidiger')
    if spieler is None:
        return
    if Zugriff.aktion_aktiv(ctx, 'links') or Zugriff.aktion_aktiv(ctx, 'rechts'):
        ctx.vars['status'] = 'Eingabe erkannt: Bewegung wird erweitert.'
Dieser Baustein verbindet Spielmodellierung mit schrittweiser Umsetzung und macht Zustände, Regeln und Rückmeldungen nachvollziehbar.

Die klare Aufgabenfolge unterstützt Unterrichtsorganisation, Zwischensicherung und die Entwicklung eines vollständigen Spielverlaufs aus kleinen Codeänderungen. Erweiterungen wie Tempo, Wellen oder Neustart ermöglichen eine flexible Anpassung an unterschiedliche Lernstände.

Fordern Sie einen Demo-Zugang an und erproben Sie den Baustein in Ihrem eigenen Kurskontext.