Seite anzeigenÄltere VersionenLinks hierherCopy this pageFold/unfold allNach oben Diese Seite ist nicht editierbar. Du kannst den Quelltext sehen, jedoch nicht verändern. Kontaktiere den Administrator, wenn du glaubst, dass hier ein Fehler vorliegt. # Kara-Labyrinth Ziel: Viel Programmieren. Wir steuern Kara, den Marienkäfer, durch ein Labyrinth. Kara kann vorwärts laufen und drehen — er sieht jedoch nur, ob direkt vor ihm, links oder rechts ein Baum steht. ^ Befehl ^ Wirkung ^ | ''kara.move()'' | Einen Schritt vorwärts | | ''kara.turnLeft()'' | Um 90° nach links drehen | | ''kara.turnRight()'' | Um 90° nach rechts drehen | | ''kara.treeFront()'' | ''True'', wenn ein Baum vor Kara steht | | ''kara.treeLeft()'' | ''True'', wenn ein Baum links von Kara steht | | ''kara.treeRight()'' | ''True'', wenn ein Baum rechts von Kara steht | | ''kara.onLeaf()'' | ''True'', wenn Kara auf einem Blatt steht | <html> <script type="module" src="https://bottom.ch/editor/stable/kara-editor.js"></script> </html> ## Aufgabe 1: Erste Schritte Führe Kara durch das Labyrinth bis zum Blatt. Schreibe dazu die nötigen Befehle — einen nach dem anderen. <html> <kara-editor step="300" id="myfirstmaze"> <kara-world> ###### #>...# ####.# #L...# ###### </kara-world> </kara-editor> </html> ## Aufgabe 2: Mit Schleife Das Labyrinth ist jetzt länger. Statt jeden einzelnen Schritt aufzuschreiben, benutzen wir eine Schleife. **Tipp:** Kara soll laufen, bis er das Blatt erreicht: <code python> while not kara.onLeaf(): if not kara.treeFront(): kara.move() elif ...: ... else: ... </code> Überlege: Was soll Kara tun, wenn er an eine Wand stösst? Nutze ''kara.treeFront()'', ''kara.treeLeft()'' und ''kara.treeRight()'', um zu entscheiden, wann Kara abbiegen muss. <html> <kara-editor step="200" id="algo"> <kara-world> ######## #>.....# ######.# ######.# ######.# #....L.# ######## </kara-world> </kara-editor> </html> ## Aufgabe 3: Grosses Labyrinth Jetzt das grosse Labyrinth! An jeder Kreuzung muss Kara selbst entscheiden, wohin er geht. **Tipp: Wandfolger-Strategie**\\ Kara hält die Wand immer auf einer Seite (z.B. links). <html> <kara-editor step="100" timeout="120" id="followthewall"> <kara-world> ###v################# #.#.....#.#.........# #.###.#.#.#.###.###.# #.#...#...#.#...#.#.# #.#.###.#####.###.#.# #...#...#.....#.#...# #####.###.###.#.#.### #...#.#.....#.....#.# #.###.#####.#.#####.# #.....#...#.#.......# #.#.#####.#.#######.# #.#.......#.......#.# #.###############.#.# #.#.#...........#...# #.#.#.#.#######.#.#.# #...#.#.....#.#...#.# #.###.#####.#.#.###.# #.#.....#...#...#...# #.#######.###.###.### #.........#.........# #########L########### </kara-world> </kara-editor> </html> Siehst du Situationen in diesem Labyrinth, die beim Wandfolge-Algorithmus Probleme bereiten könnten? ## Aufgabe 4: Labyrinth mit Inseln Und hier? Ideen gibts bei [[wpde>Lösungsalgorithmen_für_Irrgärten#Pledge-Algorithmus|Wikipedia]]. <html> <kara-editor step="100" timeout="120" id="islands"> <kara-world> ##################### #.#.....#.#.........# #.###.#.#.#.###.###.# #.#...#...#.#..v#.#.# #.#.###.###.#.###.#.# #...#...#.....#.#...# #####.###.###.#.#.### #...#.#.....#.....#.# #.###.#####.#.#####.# #.....#...#.#.......# #.#.#####.#.#######.# #.#.......#.......#.# #.###############.#.# #.#.#...........#...# #.#.#.#.#######.#.#.# #...#.#.....#.#...#.# #.###.#####.#.#.###.# #.#.....#...#...#...# #.#######.###.###.### #.........#.........# #########L########### </kara-world> </kara-editor> </html> ## Additum 1: Kara in der freien Wildbahn Kara steht diesmal mitten im offenen Feld — nicht an einer Aussenwand. Funktioniert der Pledge-Algorithmus aus Aufgabe 4 hier auch? <html> <kara-editor step="200" timeout="60" id="open"> <kara-world> ##############################L## #...............................# #...............................# #...............................# #............#######............# #............#.....#............# #............#.....#............# #............#.#.#.#............# #............###.###............# #...............................# #...............................# #...............................# #...........####.####...........# #...#####...#..#.#..#...#####...# #...#...#...#..#>#..#...#...#...# #...#..##...####.####...##..#...# #...#.......................#...# #...#..##...####.####...##..#...# #...#...#...#..#.#..#...#...#...# #...#####...#..#.#..#...#####...# #...........####.####...........# #...............................# #...............................# #...............................# #............###.###............# #............#.#.#.#............# #............#.....#............# #............#.....#............# #............#######............# #...............................# #...............................# #...............................# ################################# </kara-world> </kara-editor> </html> ## Additum 2: Kompakte Lösungssprache Ziel: Den Weg aus dem Labyrinth als kompakte Anweisung codieren. Beispiel: Der String `'L---R-R--'` steht für "Links, 3x vorwärts, rechts, 1x vorwärts, rechts, 2x vorwärts". Schreibe einen Interpreter für die obige Anweisungssprache für Kara. Ein Interpreter ist eine Funktion, die einen String erhält und den Käfer entsprechend bewegt. Wie wärs mit einer noch kompakteren Sprache, z.B. `'L3R1R2'`? Was, wenn mehr als 9 Schritte gemacht werden sollen? ## Additum 3: Sokoban! Ziel: Aus dem Labyrinth finden (also auf das Blatt). Verschiebe Pilze, die im Weg sind... <html> <kara-editor step="200" timeout="60" id="sokoban1"> <kara-world> ####### #.....# #.>.#.# #....ML #.....# #.....# ####### </kara-world> </kara-editor> </html> <html> <kara-editor step="200" timeout="60" id="sokoban2"> <kara-world> ############# #>.M....##### ####.######## ####.######## ####M######## ####...M....# ####.###.#### ########.#### ########.#### ########L#### </kara-world> </kara-editor> </html> <html> <kara-editor step="200" timeout="60" id="sokoban3"> <kara-world> ######### #>......# #...M...# ####.#### ####M### ####.#### #.......# #.......# #.L.....# ######### </kara-world> </kara-editor> </html> <html> <kara-editor step="200" timeout="60" id="sokoban4"> <kara-world> ######### #>......# #.......# #..MM...# ###.M#### #..M..### ##.#..### ##.###### #.......# #.......# #.L.....# ######### </kara-world> </kara-editor> </html> gf_informatik/kara_maze.txt Zuletzt geändert: 2026-06-21 19:22von hof