Kursvorlage

Space Invaders mit frameCraft – Arcade-Spiel Schritt für Schritt

Grundlagen von frameCraft-Spielen mit Space Invaders

Vorschaubild: Space Invaders mit frameCraft – Arcade-Spiel Schritt für Schritt

Didaktische Zielsetzung

Diese Vorlage führt schrittweise in den Aufbau eines einfachen Space-Invaders-Prototyps mit frameCraft ein. Im Mittelpunkt stehen die fachlichen Kompetenzen, ein Spiel in **Szene, Entities, Collider, Eingaben, Regeln, Zustände und Darstellung** zu strukturieren und diese Elemente systematisch in lauffähigen Code zu überführen. Der Aufbau verbindet **Modellierung und Implementierung**, indem Spielobjekte zunächst als benannte Entities mit Eigenschaften und Zuständen beschrieben und anschließend über Schleifen, Regeln, Kollisionen und Szenenvariablen gesteuert werden. Fachlich ist die Vorlage im Bereich Spieleprogrammierung mit Schwerpunkt auf **strukturierter Spiellogik, objektbezogenem Denken und wiederverwendbaren Mustern** wie Pools, Tags und Zustandsvariablen einzuordnen.

Programmieren lernen an sichtbarer Spiellogik

Gerade am Beispiel von Space Invaders zeigt sich ein zentraler Vorteil von frameCraft für den Informatikunterricht: Lernende programmieren nicht nur einzelne Sprachkonstrukte, sondern erleben unmittelbar, wie daraus ein funktionierendes System entsteht. Bereits wenige gut lesbare Anweisungen wie ENTITY, RECT, GESCHW oder REGEL führen zu sichtbaren Objekten und nachvollziehbarem Verhalten im Spiel. Dadurch bleibt der Blick auf den informatischen Konzepten, statt früh durch umfangreichen Framework-, Fenster- oder Rendering-Code verstellt zu werden. Gleichzeitig bleibt das Programm echtes Python: Variablen, Bedingungen, Funktionen, Schleifen und Datenstrukturen werden nicht durch eine grafische Oberfläche ersetzt, sondern in einem motivierenden Anwendungskontext eingesetzt.

for reihe in range(ANZAHL_REIHEN):
    for spalte in range(ANZAHL_SPALTEN):
        gx = GEGNER_STARTX + spalte * GEGNER_ABSTAND_X
        gy = GEGNER_STARTY + reihe * GEGNER_ABSTAND_Y

        ENTITY(
            "gegner_%d_%d" % (reihe, spalte),
            pos=(gx, gy),
            tag="gegner"
        )

Der Aufbau des Gegnerschwarms ist beispielsweise eine besonders geeignete Stelle, um Schleifen und zweidimensionale Strukturen nicht abstrakt, sondern mit sofort sichtbarem Ergebnis zu behandeln. Zeile und Spalte bestimmen gemeinsam Namen und Position eines Gegners; durch das Verändern weniger Konstanten können Lernende unmittelbar untersuchen, wie sich Anzahl, Abstand und Anordnung der Objekte verändern. Verschachtelte Schleifen, Koordinatenberechnung und Parametrisierung erhalten damit einen konkreten Zweck. Für Lehrkräfte entsteht zugleich ein natürlicher Differenzierungsraum: Während eine Lerngruppe zunächst nur Anzahl oder Abstand verändert, können weiterführende Aufgaben unterschiedliche Gegnertypen, Farben, Bewegungsmuster oder Punktwerte aus Zeile und Spalte ableiten.

for i in range(ANZAHL_SCHUESSE):
    sc = hole_entity(ctx, "schuss_%d" % i)

    if sc is not None and not sc.alive:
        sc.alive = True
        sc.x = sp.x
        sc.y = sp.y - 10
        sc.vy = -SCHUSS_GESCHW
        return

Auch der Schuss-Pool eröffnet einen fachlich interessanten Zugang: Statt bei jedem Tastendruck beliebig neue Objekte zu erzeugen, werden vorbereitete Entities wiederverwendet und über ihren Zustand alive aktiviert oder deaktiviert. Lernende begegnen hier bereits einem realen Muster der Software- und Spieleentwicklung, können es aber mit wenigen Zeilen nachvollziehen. Gleichzeitig lassen sich daran grundlegende Themen wie Objektzustände, Suche in Datenbeständen, Wiederverwendung und Ressourcenverwaltung besprechen. Aus einem zunächst einfachen Arcade-Spiel wird so ein Unterrichtsgegenstand, an dem sich Konzepte diskutieren lassen, die weit über Spieleprogrammierung hinausgehen.

BEI_KOLLISION("schuss", "gegner", treffer_handler)

def treffer_handler(ctx, schuss, gegner_ent):
    schuss.alive = False
    gegner_ent.alive = False
    ctx.vars["punkte"] = hole_wert(ctx, "punkte", 0) + 10

Besonders anschaulich ist zudem die Trennung von Ereignis und Reaktion. frameCraft übernimmt die technische Kollisionsprüfung, während die Lernenden festlegen, was fachlich bei einem Treffer passieren soll: Schuss deaktivieren, Gegner entfernen, Punktestand verändern oder später eine Explosion auslösen. Damit wird ereignisorientierte Programmierung in einer Form sichtbar, die sich leicht erklären und systematisch erweitern lässt. Ähnlich funktioniert die gesamte Spielsteuerung: Eingaben, Bewegung, Kollisionen, regelmäßige Gegnerbewegung und Spielende sind als eigenständige Regeln beziehungsweise Handler organisiert. Lernende erkennen so, dass größere Programme nicht aus einem einzigen langen Ablauf bestehen müssen, sondern aus klar abgegrenzten Verantwortlichkeiten aufgebaut werden können.

if not noch_lebendig:
    ctx.vars["spiel_zustand"] = "gewonnen"
elif gegner_unten:
    ctx.vars["spiel_zustand"] = "verloren"

Mit spiel_zustand, punkte, gegner_richtung oder den Sperrvariablen wird außerdem sichtbar, wie der Zustand eines Programms dessen Verhalten bestimmt. Gewinn, Verlust und Neustart sind dadurch keine Sonderfälle außerhalb des eigentlichen Programms, sondern konsequente Zustandsübergänge. Genau hier lässt sich im Unterricht der Schritt von einzelnen Befehlen hin zum Modellieren eines vollständigen Programmsystems vollziehen. frameCraft reduziert dabei bewusst technische Nebenaspekte, ohne die zugrunde liegende Informatik zu verstecken. Für Informatiklehrkräfte entsteht so eine Lernumgebung, in der klassische Unterrichtsinhalte wie Schleifen, Bedingungen, Funktionen und Variablen mit weiterführenden Konzepten wie Ereignissen, Zuständen, Objektgruppen und wiederverwendbaren Programmiermustern in einem unmittelbar verständlichen Produkt zusammengeführt werden.

Kompetenzschwerpunkte

Die Vorlage bündelt fachliche und methodische Schwerpunkte des frameCraft-basierten Arcade-Prototyps in aufeinander aufbauenden Programmierbausteinen.

  • Spielstruktur verstehen: Fenster, Szene, Szenenaufbau, Entity, Collider und grafische Darstellung werden als Grundbestandteile eines frameCraft-Spiels eingeführt.
  • Eingaben modellieren: Tastaturaktionen und virtuelle Touch-Buttons werden über gemeinsame Aktionsnamen gebündelt und in Regeln ausgewertet.
  • Bewegung kontrollieren: Horizontale Geschwindigkeit, Randbegrenzung und zeitgesteuerte Schwarmbewegung verdeutlichen kontrollierte Zustandsänderungen im Spielfeld.
  • Objektmengen strukturieren: Schüsse und Gegner werden mit nummerierten Namen, Schleifen, verschachtelten Schleifen und Tags als wiedererkennbare Gruppen organisiert.
  • Spielmechanik umsetzen: Schuss-Pool, Kollisionen, Punkte, HUD-Anzeige und Trefferverarbeitung führen die zentralen Abläufe des Prototyps zusammen.
  • Spielzustände verwalten: Gewinn, Verlust, Neustart, Sperrvariablen und das Zurücksetzen veränderlicher Werte zeigen den Umgang mit globalen Szenenzuständen.
  • Darstellung ergänzen: Grafiken aus Grundformen und Explosionen als Effekt-Pool erweitern den Prototyp um sichtbare Rückmeldungen ohne zusätzliche Spiellogik.

Struktur der Bausteine

Die Bausteine führen vom statischen Startbild über Steuerung, Schüsse, Gegner, Kollisionen und Zustände bis zu Neustart und Treffer-Effekten; jeder Schritt erweitert den vorhandenen Prototyp um eine klar abgegrenzte fachliche Funktion.

Vorschau: Lustiges Raumschiff mit frameCraft

Lustiges Raumschiff mit frameCraft

Der Einstieg klärt die Grundstruktur aus SPIEL, SZENE, SZENE_AUFBAU, Entity, RECT und GFX und legt ein sichtbares Raumschiff als Ausgangspunkt für den Prototyp an.

⏱️ 15 min 🧩 1 Aufgaben
Vorschau: Raumschiff mit Buttons steuern

Raumschiff mit Buttons steuern

Dieser Baustein ergänzt Tastaturaktionen, virtuelle Buttons, eine Steuerungsregel, vx-Bewegung und Randbegrenzung als erste interaktive Spiellogik.

⏱️ 20 min 🧩 1 Aufgaben
Vorschau: Einzelnen Schuss ergänzen

Einzelnen Schuss ergänzen

Der vorhandene Prototyp wird um ein einzelnes vorbereitetes Projektil erweitert, dessen Aktivierung, Position, vy-Bewegung und Deaktivierung den Grundablauf eines Schusses zeigen.

⏱️ 20 min 🧩 1 Aufgaben
Vorschau: Mehrere Schüsse mit Pool

Mehrere Schüsse mit Pool

Der Einzelschuss wird zu einem Pool aus nummerierten Projektilen ausgebaut, wodurch Schleifen, freie Entities und eine Feuersperre als wiederverwendbares Arcade-Muster eingeführt werden.

⏱️ 20 min 🧩 1 Aufgaben
Vorschau: Gegnerreihe mit Schleife

Gegnerreihe mit Schleife

Die Vorlage erweitert das Spiel um mehrere Gegner, die mit einer for-Schleife, nummerierten Namen, berechneten Positionen und gemeinsamem Tag systematisch erzeugt werden.

⏱️ 20 min 🧩 1 Aufgaben
Vorschau: Gegnerschwarm mit Schleifen

Gegnerschwarm mit Schleifen

Aus der Gegnerreihe entsteht durch verschachtelte Schleifen ein zweidimensionaler Schwarm mit Zeilen, Spalten, berechneten Koordinaten und regelmäßigem Namensschema.

⏱️ 20 min 🧩 1 Aufgaben
Vorschau: Treffer und Punkte

Treffer und Punkte

Kollisionen zwischen Schüssen und Gegnern, das Deaktivieren per alive, Punktwerte in ctx.vars und eine HUD-Anzeige verbinden Objektzustände mit Spielrückmeldung.

⏱️ 20 min 🧩 1 Aufgaben
Vorschau: Gegnerschwarm gemeinsam bewegen

Gegnerschwarm gemeinsam bewegen

Die Gegnergruppe erhält eine zeitgesteuerte Schrittbewegung, bei der Schwarmgrenzen bestimmt, Richtungen gespeichert und lebende Gegner gemeinsam verschoben werden.

⏱️ 20 min 🧩 1 Aufgaben
Vorschau: Spielende in Space Invaders

Spielende in Space Invaders

Dieser Baustein führt Spielzustände, Statusmeldungen, Gewinn- und Verlustbedingungen sowie das Ausblenden des Spielfelds als Abschlusslogik des Prototyps zusammen.

⏱️ 20 min 🧩 1 Aufgaben
Vorschau: Space Invaders: Sauber neu starten

Space Invaders: Sauber neu starten

Der Neustart-Baustein zeigt, wie Eingabeaktion, Sperrvariable, NEUSTART und explizite Startwerte für Variablen und Entities zu einem robusten Reset zusammenspielen.

⏱️ 18 min 🧩 1 Aufgaben
Vorschau: Treffer-Explosion ergänzen

Treffer-Explosion ergänzen

Abschließend ergänzt ein Effekt-Pool kurze Explosionen mit Restzeit, ctx.dt und animierter GFX, ohne die bestehende Treffer- und Punktelogik zu verändern.

⏱️ 20 min 🧩 1 Aufgaben
Nutzen Sie diese Vorlage als strukturierte Grundlage für eigene frameCraft-Unterrichtsprojekte. Vorlage testen

Inhalte im Überblick

Die folgende Übersicht fasst die aus der Vorlage ableitbaren Rahmendaten und fachlichen Bestandteile zusammen.

AspektEinordnung
KategorieframeCraft
ProgrammiersprachePython 2
Bausteine11
Gesamtdauer213 min
Zentrale InhalteSpiel-Fenster, Szene, Entity, Collider, Grafik, Steuerung, Schüsse, Gegner, Kollisionen, Punkte, Spielzustände, Neustart und Explosionen
Unterrichtlicher FokusSchrittweiser Aufbau eines Space-Invaders-Prototyps mit strukturierter Spiellogik
Diese Vorlage führt den Aufbau eines Space-Invaders-Prototyps strukturiert von der Szene bis zu Spielzuständen und Effekten.

Die Bausteine machen Lernziele und Zwischenschritte transparent und lassen sich gut an Unterrichtsreihen zur frameCraft-Programmierung anschließen. Der Kompetenzaufbau reicht von der Grundstruktur eines Spiels bis zur Verknüpfung von Eingabe, Objektgruppen, Kollisionen und Zuständen.

Über den Demo-Zugang können Sie die Vorlage erproben und die einzelnen Bausteine passend zu Ihrer Lerngruppe auswählen oder anpassen.