Kapitel 11 von 12

Algorithmen für ein Stadtviertel

JavaScript
Planung, Zerlegung, Wiederverwendung
Minecraft-Projekt
Wohngebiet
Lernziel
Die Kinder zerlegen ein größeres Problem in wiederverwendbare Bausteine.

Jetzt kombinieren wir Funktionen, Parameter, Schleifen, Bewegung und Checkpoints zu einem ganzen Viertel.

Für Lehrkräfte: Erst die Aufgabe zeigen, dann das Problem gemeinsam besprechen und danach das neue JavaScript-Konzept einführen. So entsteht die Syntax aus einem sichtbaren Bauproblem.

Startcode

function haus(breite, hoehe, tiefe, material) {
    drone.box0(material, breite, hoehe, tiefe);
    drone.up(hoehe).box("STONE_BRICKS", breite, 1, tiefe);
    drone.down(hoehe);
}

drone.chkpt("stadt");

for (var i = 0; i < 5; i++) {
    haus(7, 4, 7, "OAK_PLANKS");
    drone.right(10);
}

drone.move("stadt").fwd(15);

for (var i = 0; i < 5; i++) {
    haus(7, 6, 7, "WHITE_CONCRETE");
    drone.right(10);
}

Schritt für Schritt

1. Stadtplan zeichnen

Skizziere auf Papier Straßen und Gebäude.

2. Funktionen sammeln

Lege Funktionen für Haus, Laterne und Baum an.

3. Reihen bauen

Erzeuge zwei Häuserreihen und eine Straße dazwischen.

Challenge:

Programmiere ein Wohngebiet mit mindestens 10 Häusern, einer Straße, Laternen und einem kleinen Park.

Musterlösung

Die Musterlösung ist nur eine mögliche Lösung. Andere funktionierende Lösungen sind ausdrücklich erwünscht.

function haus(material) {
    drone.box0(material, 7, 4, 7);
    drone.up(4).box("STONE_BRICKS", 7, 1, 7);
    drone.down(4);
}

function laterne() {
    drone.box("OAK_LOG", 1, 4, 1);
    drone.up(4).box("SEA_LANTERN");
    drone.down(4);
}

drone.chkpt("start");

for (var i = 0; i < 5; i++) {
    haus("OAK_PLANKS");
    drone.right(10);
}

drone.move("start").fwd(12);
drone.box("STONE", 47, 1, 5);

drone.move("start").fwd(18);
for (var i = 0; i < 5; i++) {
    haus("BIRCH_PLANKS");
    drone.right(10);
}

drone.move("start").fwd(6);
for (var i = 0; i < 8; i++) {
    laterne();
    drone.right(6);
}
Typische Fehler
  • Große Projekte zuerst in kleine Funktionen zerlegen.
  • Nach jedem Teilprojekt testen.
  • Bei verschobenen Gebäuden Checkpoints statt komplizierter Rückwärtsbewegungen verwenden.