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 19:53] hofphtg:fdif:karatutorial:labyrinthe [2024-06-27 14:20] (aktuell) – [Mehr Bedingungen] hof
Zeile 35: Zeile 35:
  
 ### 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 62: Zeile 70:
     } else {     } else {
         kara.move();         kara.move();
 +    }
 +}
 +</code>
 +++++
 +### 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:
 +
 +  * `kara.treeLeft()` trifft zu, falls links von Kara (in Laufrichtung) ein Baum steht.
 +  * `kara.treeRight()` trifft zu, falls links von Kara (in Laufrichtung) ein Baum steht.
 +
 +### Aufgabe 8
 +Schreibe die Lösung zu Aufgabe 7 um, indem du die neuen Bedingungen einbaust!
 +
 +++++Lösung|
 +<code javascript>
 +while (!kara.mushroomFront()) {
 +    if (kara.treeFront()) {
 +        if (kara.treeLeft()) {
 +            kara.turnRight();
 +        } else {
 +            kara.turnLeft();
 +        }
 +    } else {
 +        kara.move();
 +    }
 +}
 +</code>
 +++++
 +
 +### Aufgabe 9
 +Reicht das bereits, um aus jedem Labyrinth hinauszufinden? Zu früh gefreut, hier wartet die nächste Herausforderung! Überlege dir zuerst, wie du aus einem Labyrinth finden würdest, bevor du dich an den Code wagst!
 +
 +<HTML><script type="text/p5">
 +KaraWorld.create(
 +  `TTTTTTTTT
 +   T>      T
 +   TTTTTTT T
 +       T
 +   T T TT TT
 +   T T     T
 +   T TTTTTTT
 +         T
 +   TTTTTTTTT`);
 +</script></HTML>
 +
 +++++Ideen|
 +  * ... einfach mal die Hand an die Wand legen und nie loslassen!
 +++++
 +
 +++++Lösung|
 +<code javascript>
 +while (!kara.mushroomFront()) {
 +    // Wir folgen der rechten Wand
 +    if (!kara.treeRight()) {
 +        kara.turnRight();
 +        kara.move();
 +    } else if (!kara.treeFront()) {
 +        kara.move();
 +    } else {
 +        kara.turnLeft();
 +    }
 +}
 +</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> </code>
 ++++ ++++
  • phtg/fdif/karatutorial/labyrinthe.1719172431.txt.gz
  • Zuletzt geändert: 2024-06-23 19:53
  • von hof