Level 3 – Kreative Aufgaben

Kreative Aufgaben für Chatbefehle

Didaktik-Hinweis

Das Skript für eine Plattform ist eine hervorragende Grundlage. Es enthält fundamentale Konzepte: Koordinaten (x, y, z), Schleifen (for) und das API des Spiels. Damit die Schüler den Code nicht nur kopieren, sondern auch verstehen, sollen die Aufgaben sie dazu anregen, Variablen zu ändern, Bedingungen hinzuzufügen oder die Geometrie zu verkomplizieren.

Ausgangsbasis

Die folgenden Aufgaben basieren auf dem Code-Beispiel der Seite Platform under Player. Die Schüler sollten diesen Code als Startpunkt verwenden.

Level 1: „Architekt-Anfänger“ (Parameter ändern)

Ziel: Verstehen, wofür bestimmte Codezeilen verantwortlich sind.

  1. Aufgabe 1: „Der edle Pfad“
    Langweiliger Stein (default:stone) gefällt niemandem. Ändere das Programm so, dass die Plattform aus Glas (default:glass), Holz (default:wood) oder sogar Gold (default:goldblock) gebaut wird.
    Hinweis: Finde die Zeile { name = "default:stone" }.
  2. Aufgabe 2: „Helikopter-Landeplatz“
    Eine 3x3-Plattform ist zu klein, der Spieler könnte herunterfallen. Vergrößere die Plattform auf 7x7 Blöcke.
    Hinweis: Achte auf die Schleifen for dx = -1, 1. Welche Zahlen musst du anstelle von -1 und 1 einsetzen, um 7 Blöcke zu erhalten?
  3. Aufgabe 3: „Himmelsbrücke“
    Wir brauchen kein Quadrat. Wir brauchen einen schmalen, aber langen Weg, um eine Schlucht zu überqueren. Mache die Plattform 1 Block breit und 10 Blöcke lang.
    Hinweis: Ändere die Grenzen nur in einer der Schleifen (z. B. dz) und lasse die andere unverändert (dx = 0, 0).

Level 2: „Geometer“ (Arbeit mit Koordinaten und Schleifen)

Ziel: Das 3D-Raumverständnis und verschachtelte Schleifen trainieren.

  1. Aufgabe 4: „Käfig für ein Monster“
    Eine Plattform unter den Füßen ist gut, aber Feinde können von der Seite angreifen. Ändere den Code so, dass nicht eine Fläche, sondern ein 3x3x3 großer Würfel entsteht, in dessen Mitte sich der Spieler befindet.
    Hinweis: Derzeit haben wir zwei Schleifen (X und Z). Du musst eine dritte Schleife für die Höhe (dy) hinzufügen und die y-Koordinate ändern.
  2. Aufgabe 5: „Treppe zum Himmel“
    Erstelle einen Befehl /stairs, der vor dem Spieler eine einfache Treppe aus 5 Stufen nach oben baut.
    Hinweis: Hier ist ein Trick erforderlich. Innerhalb der Schleife muss die Y-Koordinate von Z abhängen (je weiter der Block entfernt ist, desto höher ist er). Zum Beispiel: y = pos.y + dz.
  3. Aufgabe 6: „Der Brunnen“
    Der Spieler möchte schnell nach unten. Erstelle einen Befehl, der die Blöcke unter dem Spieler entfernt (sie durch air ersetzt) und so einen 10 Blöcke tiefen vertikalen Tunnel erstellt.
    Hinweis: Verwende das Material air. Die Schleife muss nach unten gehen (von -1 bis -10).

Level 3: „Programmierer“ (Logik und Zufall)

Ziel: Verwendung von Bedingungen (if) und Lua-Funktionen.

  1. Aufgabe 7: „Magische Arena“
    Sorge dafür, dass die Plattform bunt wird. Jeder Block der Plattform soll zufällig ausgewählt werden: entweder Stein oder ein Leuchtstein (default:mese_lamp).
    Hinweis: Verwende math.random(1, 2) innerhalb der Schleife. Wenn 1 herauskommt, setze Stein, bei 2 eine Lampe.
  2. Aufgabe 8: „Donut-Plattform“
    Erstelle eine 5x5-Plattform mit einem Loch in der Mitte (direkt unter dem Spieler wird kein Block platziert), damit man nach unten schießen kann.
    Hinweis: Füge innerhalb der Schleifen eine if-Bedingung hinzu. Wenn dx == 0 and dz == 0, dann soll core.set_node nicht ausgeführt werden.
  3. Aufgabe 9: „Intelligenter Baumeister“
    Derzeit baut der Befehl /platform immer aus Stein. Ändere ihn so, dass der Spieler /platform wood oder /platform glass schreiben kann.
    Hinweis: Verwende die Variable param, die an die Funktion übergeben wird. Beispiel: local material = "default:" .. param. (Achtung: Was passiert, wenn der Spieler nichts eingibt?).

Beispiel für Lehrer: Bunte Plattform

Hier ist ein mögliches Lösungsbeispiel für Aufgabe 7, um den Schülern zu helfen oder als Referenz zu dienen.

Beispiel: Bunte Plattform
core.register_chatcommand("disco_platform", {
    params      = "",
    description = "Erzeugt eine farbige Plattform unter dir.",
    privs       = { interact = true },
    func = function(name, param)
        local player = core.get_player_by_name(name)
        if not player then return end
        local pos = vector.round(player:get_pos())

        for dx = -2, 2 do
            for dz = -2, 2 do
                -- Zufällige Materialauswahl
                local node_name = "default:stone"
                if math.random() > 0.5 then
                    node_name = "default:glass" -- 50% Chance auf Glas
                end

                core.set_node(
                    { x = pos.x + dx, y = pos.y - 1, z = pos.z + dz },
                    { name = node_name }
                )
            end
        end
        return true, "Disco-Boden ist fertig!"
    end,
})