Algorithmen für ein Stadtviertel
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.