Level 3 – Kreative Aufgaben
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.
Die folgenden Aufgaben basieren auf dem Code-Beispiel der Seite Platform under Player. Die Schüler sollten diesen Code als Startpunkt verwenden.
Ziel: Verstehen, wofür bestimmte Codezeilen verantwortlich sind.
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.{ name = "default:stone" }.
for dx = -1, 1. Welche Zahlen musst du anstelle von -1
und 1 einsetzen, um 7 Blöcke zu erhalten?
dz) und lasse die andere
unverändert (dx = 0, 0).
Ziel: Das 3D-Raumverständnis und verschachtelte Schleifen trainieren.
dy) hinzufügen und die y-Koordinate ändern.
/stairs, der vor dem Spieler eine einfache Treppe aus 5 Stufen nach
oben baut.y = pos.y + dz.
air ersetzt) und so einen 10 Blöcke tiefen vertikalen Tunnel erstellt.air. Die Schleife muss nach unten gehen (von -1 bis
-10).
Ziel: Verwendung von Bedingungen (if) und Lua-Funktionen.
default:mese_lamp).math.random(1, 2) innerhalb der Schleife. Wenn 1 herauskommt, setze
Stein, bei 2 eine Lampe.
if-Bedingung hinzu. Wenn
dx == 0 and dz == 0, dann soll core.set_node nicht ausgeführt werden.
/platform immer aus Stein. Ändere ihn so, dass der Spieler
/platform wood oder /platform glass schreiben kann.param, die an die Funktion übergeben wird. Beispiel:
local material = "default:" .. param. (Achtung: Was passiert, wenn der Spieler nichts
eingibt?).
Hier ist ein mögliches Lösungsbeispiel für Aufgabe 7, um den Schülern zu helfen oder als Referenz zu dienen.
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,
})