Lektion 2: Wenn/Andernfalls bedingte Aussagen
In dieser Lektion erstellen Sie ein Projekt, bei dem der VR-Roboter mindestens zwei Gebäude auf dem Dynamic Castle Crasher Playground umstößt. Ein Algorithmus wird benötigt, um die Herausforderung mithilfe von Schleifen und Sensor-Feedback zu lösen, da sich das Playground-Layout mit jedem Reset ändert.
Beispiele für Dynamic Castle Crasher Spielplatz-Layouts:

Lernergebnisse
- Identifizieren Sie, dass ein [If then else] -Block ein C-Block ist, der die Blöcke entweder innerhalb des If- oder des Else-Zweigs basierend auf dem gemeldeten Booleschen Wert ausführt.
- Identifizieren Sie, dass ein [If then else] -Block normalerweise mit einem [Repeat] - oder einem [Forever] -Block verwendet wird, um die Bedingung mehr als einmal zu überprüfen.
- Identifizieren und beschreiben Sie, warum ein [If then else] -Block mit Schleifen verwendet wird.
- Beschreiben Sie, was dazu führen würde, dass eine [If then else] -Zweigstelle in einem Projekt ausgeführt wird.
So verwenden Sie einen [If then else] -Block
Diese Herausforderung unterscheidet sich von der Castle Crasher-Herausforderung in Einheit 2. Die Einheit 2-Herausforderung verwendete einfache Sequenzierungs- und Antriebsbefehle, um die Gebäude auf einem statischen Spielplatz umzustoßen.

Die Befehle des Antriebsstrangs allein reichen aufgrund der sich ändernden Layouts des Dynamic Castle Crasher Playground nicht aus, um den VR-Roboter dazu zu bringen, zwei oder mehr Gebäude niederzureißen. Eine Reihe von Antriebsbefehlen kann auf einem Spielplatz funktionieren, aber nicht auf einem anderen. Es wird ein Algorithmus benötigt, der Sensoren und Auswahl verwendet. Der Block [If then else] wird verwendet, um einen Algorithmus zu erstellen, indem diesem Projekt eine Auswahl mit bedingten Anweisungen hinzugefügt wird.

Es gibt zwei Hauptschritte für den VR-Roboter, um Gebäude auf dem Dynamic Castle Crasher Playground umzustoßen.
- Wenn der VR-Roboter ein Schlossgebäude erkennt, fahren Sie nach vorne, um es umzustoßen.
-
Im Gegensatz zu jedem anderen Spielplatz hat der Dynamic Castle Crasher Playground keine Wände. Da die Gebäude die einzigen Objekte auf dem Dynamic Castle Crasher Playground sind, kann der Abstandssensor verwendet werden, um Gebäude zu erkennen.

-
- Wenn der VR-Roboter kein Schlossgebäude erkennt, drehen Sie sich um und suchen Sie erneut nach einem Schlossgebäude.
-
Da die Gebäude die einzigen Objekte auf dem Dynamic Castle Crasher Playground sind, kann der Abstandssensor verwendet werden, um Schlossgebäude zu erkennen.

-
Sobald die Schritte 1 und 2 abgeschlossen sind, kann der VR-Roboter zu Schritt 1 zurückkehren und den Abstandssensor verwenden, um das nächste Gebäude zum Umstürzen zu finden.
-
Starten Sie ein neues Projekt in VEXcode VR und benennen Sie das Projekt Unit9Lesson2.

-
Fügen Sie zwei [Comment] -Blöcke in den Arbeitsbereich ein und füllen Sie die oben beschriebenen Schritte aus.

-
Ein [If then else] -Block kann verwendet werden, um jede der oben beschriebenen Aktionen auszulösen. Jede Aktion hängt davon ab, ob die boolesche Bedingung im Block [If then else] TRUE oder FALSE meldet. Fügen Sie einen [If then else] -Block unter den [Comment] -Blöcken hinzu.

Zur Kenntnisnahme
Der [If then else] -Block ist ein C-Block, der Boolesche Reporter-Blöcke als Eingabe akzeptiert. Der Block [If then else] ist eine bedingte Anweisung, die den Ablauf eines Projekts steuert. Der [If then else] -Block führt eine bestimmte Anweisungssequenz aus, wenn die Bedingung erfüllt ist, und einen anderen Satz von Anweisungen, wenn die Bedingung NICHT erfüllt ist, wodurch der Projektablauf "verzweigt" wird. Es wird nur ein Branch im [If then else] ausgeführt.

- Wenn die Bedingung als WAHR gemeldet wird, werden die Blöcke im If Then-Zweig ausgeführt.
- Wenn die Bedingung als FALSCH gemeldet wird, werden die Blöcke innerhalb des Else-Zweigs ausgeführt.

Sobald alle Blöcke in einem der Zweige ausgeführt wurden, wird das Projekt zum nächsten Block außerhalb des [Wenn dann sonst] -Blocks weitergeleitet.
-
In diesem Projekt kann der Abstandssensor verwendet werden, um Gebäude auf dem Spielplatz zu erkennen. Fügen Sie einen <Distance found object> Block zum [If then else] -Block hinzu.

Zur Kenntnisnahme
Der <Distance found object> Block ist ein boolescher Reporterblock, der meldet, ob der Abstandssensor ein Objekt vor dem VR-Roboter gefunden hat. Dieser Block meldet WAHR, wenn sich ein Objekt oder eine Oberfläche innerhalb von 3000 Millimetern (mm) vom VR-Roboter befindet.

-
Nun muss jeder Zweig des [If then else] -Blocks mit den zu Beginn des Projekts erstellten Kommentaren definiert werden. Wenn der <Distance found object> Block TRUE meldet, sollte der VR-Roboter auf dieses Gebäude zufahren, um es umzustoßen. Verschieben Sie diesen [Kommentar] -Block in den Zweig "Wenn dann" des Projekts.

-
Verschieben Sie den anderen [Comment] -Block in den Zweig "Else" des Projekts, um zu erfahren, was passieren sollte, wenn der VR-ROBOTER kein Gebäude erkennt.

-
Fügen Sie einen [Drive] -Block in den Zweig "If Then" des [If then else] -Blocks ein.

-
Wenn der <Distance found object> Block FALSCH meldet, muss sich der VR-Roboter umdrehen und ein Gebäude auf dem Spielplatz finden. Fügen Sie einen [Turn] -Block unter dem [Comment] -Block im Zweig "Else" des [If then else] -Blocks hinzu.

-
Bevor das Projekt getestet wird, muss ein weiterer Block hinzugefügt werden. [If then else] -Blöcke überprüfen den Zustand nur einmal, bevor sie zum nächsten Block im Stapel wechseln. In Einheit 7 wurde dem Projekt ein [Forever] -Block hinzugefügt, um den VR-Roboter anzuweisen, den Zustand des Down Eye Sensors wiederholt zu überprüfen. Um sicherzustellen, dass die Bedingung des Abstandssensors wiederholt überprüft wird, ziehen Sie einen [Forever] -Block in den Arbeitsbereich um den [If then else] -Block.

-
Öffne den Dynamic Castle Crasher Playground und führe das Projekt aus.

-
Sobald der VR-Roboter mindestens zwei Gebäude umgeworfen hat, laden Sie den Spielplatz neu und führen Sie das Projekt auf einem anderen Layout des Dynamic Castle Crasher Playground aus.

-
Bei jedem Durchlauf des Projekts dreht sich der VR-Roboter, bis ein Gebäude vom Abstandssensor erkannt wird, und fährt dann auf dieses Gebäude zu, um es umzustoßen.

- Während des Projektlaufs kann der VR-Roboter ein Gebäudeteil bis an den Rand schieben und vom Spielplatz fallen. Dies liegt daran, dass der <Distance found object> Block immer noch meldet, dass sich ein Objekt vor dem VR-Roboter befindet. Wenn dieser Block TRUE meldet, fährt der VR-Roboter vorwärts. Der VR-Roboter fällt vom Tisch.
Wählen Sie die Schaltfläche Weiter um mit dem Rest dieser Lektion fortzufahren.