Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
phtg:fdif:karatutorial:labyrinthe [2024-06-23 20:08] hofphtg:fdif:karatutorial:labyrinthe [2024-06-27 14:20] (aktuell) – [Mehr Bedingungen] hof
Zeile 33: Zeile 33:
 </code> </code>
 ++++ ++++
 +
 ### Aufgabe 7 ### Aufgabe 7
-Schwieriger wird es, wenn je nach Situation nach links statt nach rechts gewendet werden soll. Findet Kara zum Pilz?+Schwieriger wird es, wenn je nach Situation nach links statt nach rechts gewendet werden soll. Wie wird sich Kara mit dem Code von Aufgabe 6 bewegen? Findet Kara zum Pilz? Was musst du ändern, um ins Ziel zu kommen? Denk dran, dass sich Verzweigungen (`if`) und Schleifen (`while`) beliebig ineinander verschachteln lassen!
  
 <HTML><script type="text/p5"> <HTML><script type="text/p5">
 +// Lösung von Aufgabe 6 - was passiert?
 +while (!kara.mushroomFront()) {
 +    if (kara.treeFront()) {
 +        kara.turnRight();
 +    } else {
 +        kara.move();
 +    }
 +}
 KaraWorld.create( KaraWorld.create(
   `TTTTTTTTT   `TTTTTTTTT
Zeile 65: Zeile 74:
 </code> </code>
 ++++ ++++
- 
 ### Mehr Bedingungen ### Mehr Bedingungen
 Damit wir Kara nicht die ganze Zeit umdrehen müssen, können wir sie auch zusätzlich fragen, ob links oder rechts von ihr ein Baum ist: Damit wir Kara nicht die ganze Zeit umdrehen müssen, können wir sie auch zusätzlich fragen, ob links oder rechts von ihr ein Baum ist:
Zeile 81: Zeile 89:
         if (kara.treeLeft()) {         if (kara.treeLeft()) {
             kara.turnRight();             kara.turnRight();
-        } else if (kara.treeRight()) { 
-            kara.turnLeft(); 
         } else {         } else {
-            // Umdrehen! 
-            kara.turnLeft(); 
             kara.turnLeft();             kara.turnLeft();
         }         }
Zeile 130: Zeile 134:
 </code> </code>
 ++++ ++++
 +### Wie weiter?
 +Gratulation, du hast das Kara-Labyrinth Dossier fertig bearbeitet!
  
 +Aber halt! Gibt es Labyrinthe, aus denen wir mit dem Wand-Folge-Algorithmus nicht hinausfinden? Was könnte man in dieser Situation tun?
 +
 +++++Ideen|
 +  * Wenn Kara mitten im Raum steht, müssen wir zuerst eine Wand findent!
 +  * Wenn die gefolgte Wand eine Insel im Labyrinth bildet, so laufen wir im Kreis.
 +  * Abhilfe:
 +    * Wir könnten uns merken, wo wir bereits durchgelaufen sind, und allenfalls eine andere Abzweigung nehmen ([[wpde>Ariadnefaden]]).
 +    * Wir könnten Kara auch einfach eine Zufallswahl treffen lassen und hoffen, dass wir irgendwann zum Pilz finden...
 +    * Mehr Ideen: [[wpde>Lösungsalgorithmen_für_Irrgärten]]
 +++++
 +### Aufgabe 10 (Challenge)
 +
 +Finde aus dem untenstehenden Labyrinth!
 +
 +<HTML>
 +<script type="text/p5" data-preview-width="600" data-height="600">
 +let game = KaraWorld.create(
 +    `TTTTTTTTTTTTTTTTTT
 +                    T
 +          >         T
 +                    T
 +     TTT TTTTTTTTTTTTTT
 +                    T
 +     TTTTTTTT TTTTTTTTT
 +                  T T
 +     TTT TTTTTTTTTTTT T
 +                    T
 +     TTTTTTTT TTTTTTTTT
 +                  T T
 +     TTT TTTTTTTTTTTT T
 +                    T
 +     TTTTTTTT TTTTTTTTT
 +                    T
 +     TTTTTTTTTTTTMTTTTT`, 25, false, true);
 +
 +function setup() {
 +  let size = game.grid.gridSize();
 +  createCanvas(size.x * 25, size.y * 25);
 +  // 100ms delay, up to 200 commands
 +  game.executeKara(100, 'my_kara', 300);
 +}
 +
 +function draw() {
 +  game.draw(25);
 +}
 +</script>
 +</HTML>
 +
 +++++Lösung|
 +<code javascript>
 +// Wand suchen
 +while (!kara.treeFront()) {
 +  kara.move(); ;
 +}
 +kara.turnLeft()
 +
 +// Folge der rechten Wand
 +while (!kara.mushroomFront()) {
 +    if (!kara.treeRight()) {
 +        kara.turnRight();
 +        kara.move();
 +    } else if (!kara.treeFront()) {
 +        kara.move();
 +    } else {
 +        kara.turnLeft();
 +    }
 +}
 +</code>
 +++++
  • phtg/fdif/karatutorial/labyrinthe.1719173292.txt.gz
  • Zuletzt geändert: 2024-06-23 20:08
  • von hof