Lektion 2: Erstellen und Testen des Projekts
Fortsetzung des Projektaufbaus
-
Nun muss die Bedingung der if else -Anweisung festgelegt werden. Um den Distanzsensor zum Erkennen von Burgen zu verwenden, kann der Befehl found_object verwendet werden. Fügen Sie der Bedingung den Befehl found_object hinzu. Ihr Projekt sollte nun so aussehen:
def main(): # Erkennt der Abstandssensor eine Burg? wenn front_distance.found_object(): # Von einem Entfernungssensor erkannte Absturzburg passiert sonst: # Wende, um eine Burg mit dem Entfernungssensorpass zu finden -
Wenn der Abstandssensor ein Objekt findet, sollte der VR-Roboter vorwärts fahren, um die Burg umzustoßen. Fügen Sie einen Antriebsbefehl in den Zweig "if" der if else-Anweisung ein und legen Sie den Parameter fest , um den VR-Roboter vorwärts zu fahren. (Dieser Befehl sollte das 'pass' ersetzen).
def main(): # Erkennt der Abstandssensor eine Burg? if front_distance.found_object(): # Durch einen Abstandssensor erkannte Absturzburg drive (FORWARD) else: # Mit dem Abstandssensorpass abbiegen, um eine Burg zu finden -
Wenn der Befehl found_object False“ meldet, wird der Zweig „else“ ausgeführt, sodass der VR-Roboter abbiegen muss, um ein Schloss auf dem Spielplatz zu finden. Fügen Sie einen Abbiegebefehl in den Zweig "Else" ein und stellen Sie die Parameter ein, um den VR-Roboter nach rechts zu drehen.
def main(): # Erkennt der Abstandssensor eine Burg? wenn front_distance.found_object(): # Aufprallschloss von einem Abstandssensor Antriebsstrang erkannt.antreiben ( VORWÄRTS) sonst: # Drehen, um ein Schloss mit dem Abstandssensor Antriebsstrang zu finden.drehen(RECHTS)
Zur Kenntnisnahme
Der Zweig 'else' der if else -Anweisung funktioniert in einem Projekt nur als Teil einer if else -Anweisung. Während Sie eine if-Anweisung eigenständig haben können, gibt es in VEXcode VR Python keine "else" -Anweisung. Der Zweig 'else' wird ausgeführt, wenn die Bedingung des Zweigs 'if' nicht erfüllt ist. Ohne eine definierte Bedingung (den Zweig "if") würde der Zweig "else" niemals ausgeführt. 
Fügen Sie eine Schleife hinzu und testen Sie das Projekt
- Bevor das Projekt getestet wird, muss ein weiterer Befehl hinzugefügt werden. Andernfalls prüfen Anweisungen die Bedingung nur einmal, bevor sie zum nächsten Befehl außerhalb der Anweisung wechseln. In Einheit 7 wurde dem Projekt eine Endlosschleife 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 eine Endlosschleife ein oder geben Sie sie ein, und kopieren Sie dann die if else -Anweisung in die Endlosschleife. Ihr Projekt sollte nun so aussehen:
-
Denken Sie daran, beim Kopieren und Einfügen von Befehlen in eine Schleife auf Einrückungen zu achten, damit das Projekt bei der Ausführung wie beabsichtigt funktioniert.
def main(): while True: # Erkennt der Abstandssensor eine Burg? wenn front_distance.found_object(): # Aufprallschloss von einem Abstandssensor Antriebsstrang erkannt.antreiben ( VORWÄRTS) sonst: # Drehen, um ein Schloss mit dem Abstandssensor Antriebsstrang zu finden.drehen(RECHTS) warten(5, MS)
-
- Öffnen Sie das Playground-Fenster, wenn es noch nicht geöffnet ist. Stellen Sie sicher, dass sich der Dynamic Castle Crasher Playground öffnet, und führen Sie das Projekt aus.

- Sobald der VR-Roboter mindestens zwei Schlösser 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 um, bis eine Burg 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 Burgstück bis an den Rand schieben und vom Spielplatz fallen. Dies liegt daran, dass der Befehl found_object immer noch meldet, dass sich ein Objekt vor dem VR-Roboter befindet. Wenn dieser Befehl True meldet, fährt der VR-Roboter vorwärts, was dazu führt, dass der VR-Roboter vom Spielplatz fällt.
Projektablauf mit If Else-Anweisung
Die if else -Anweisung wird verwendet, damit der VR-Roboter eine Entscheidung treffen kann. Wenn die boolesche Bedingung True ist, werden die Befehle innerhalb des Zweigs "if" ausgeführt. Wenn die boolesche Bedingung Falsch ist, werden die Befehle innerhalb des Zweigs 'else' ausgeführt.
Beispielsweise erkennt in dieser Iteration des Dynamic Castle Crasher Playground der Distanzsensor beim Starten des Projekts ein Objekt – die Bedingung des found_object Befehls „True“ (Wahr) Jetzt wird der „if“-Zweig des Projekts ausgeführt und der VR-Roboter fährt vorwärts. Der VR-Roboter überspringt den „else“-Zweig des Projekts.
- Beachten Sie, dass die Daten des Abstandssensors auch im Dashboard gemeldet werden. Wenn ein Objekt erkannt wird, wird der Abstandswert angezeigt.
Wenn das Projekt in dieser Iteration des Dynamic Castle Crasher Playground jedoch gestartet wird, erkennt der Distanzsensor KEIN Objekt – die Bedingung des Befehls found_object meldet „Falsch“. Jetzt überspringt der VR-Roboter den „if“ -Zweig des Projekts und der „else“ -Zweig des Projekts wird ausgeführt, sodass der VR-Roboter nach rechts abbiegt.
- Beachten Sie, dass der Wert des Abstandssensors im Armaturenbrett mit > 3000 mm angegeben wird. Der Abstandssensor kann Objekte innerhalb eines Bereichs von 3000 Millimetern (mm) erkennen. Wenn also ein Objekt nicht erkannt wird, wird der Wert als größer als (>) 3000 mm gemeldet.
Da sich die if else -Anweisung innerhalb einer unendlichen while -Schleife befindet, kehrt das Projekt an die Spitze der unendlichen while -Schleife zurück, um den Zustand der if else -Anweisung wiederholt zu überprüfen. Diese Schleife wird endlos fortgesetzt und weist den VR-Roboter an, die Bedingung wenn sonst hunderte Male pro Sekunde zu überprüfen.
- Beachten Sie, dass die Befehle drive und turn innerhalb der if else Anweisung keine Wartebefehle sind. Nicht wartende Befehle stoppen den Fluss eines Projekts nicht, während sie ausgeführt werden. Ein Nicht-Warten-Verhalten, das in einer if else -Anweisung ausgeführt wird (z. B. "Vorwärts fahren, wenn Objekt erkannt wird"), wird fortgesetzt, während die Bedingung überprüft wird, und ändert sich nur, wenn sich die Bedingung ändert.
Zur Kenntnisnahme
Eine if else -Anweisung wird verwendet, um sicherzustellen, dass nur eine Zweigstelle im Projekt ausgeführt wird, wenn die Bedingung überprüft wird. Nur eine Instanz oder Bedingung kann jederzeit wahr sein. Das macht das Projekt effizienter.

Vergleichen Sie das aktuelle Projekt mit dem in Einheit 7 erstellten Projekt. Das Projekt Unit 7 verwendet vier if -Aussagen.

Beim Durchlaufen eines Projekts mit mehreren if -Anweisungen könnte es möglich sein, dass mehrere Bedingungen True (oder False) melden, wenn das Projekt die Befehle in der unendlichen while -Schleife durchläuft. Konflikte wie diese könnten dazu führen, dass das Projekt nicht mehr oder langsamer läuft.
Mit anderen Worten, mehrere if-Anweisungen in einem Projekt sind wie eine Straße mit mehreren Ausfahrtsrampen. Je nachdem, wohin Sie gehen möchten, würden Sie an verschiedenen Stellen abbiegen. Wenn du zum Beispiel zur Schule gehst, würdest du links abbiegen; wenn du zum Laden gehst, würdest du rechts abbiegen. Aber was ist, wenn du nicht zur Schule oder in den Laden gehst? Beide Bedingungen würden Falsch melden, und Sie würden auf dem geraden Weg bleiben. Oder was wäre, wenn Sie sowohl in die Schule als auch in den Laden gehen würden? Beide Bedingungen würden True melden, aber Sie können nicht an zwei Standorten gleichzeitig drehen. 
Um die Analogie fortzusetzen, ist eine if else-Anweisung wie das Fahren zu einer Gabelung auf der Straße – sie zwingt Sie, eine Entscheidung zu treffen. Wenn Sie zur Schule gehen, biegen Sie links ab. Andernfalls biegen Sie rechts ab. Egal wohin du gehst, du biegst entweder links oder rechts ab. Die Verwendung einer if else -Anweisung würde Fehler wie die oben genannten vermeiden, da Sie dadurch gezwungen wären, eine Entscheidung zu treffen, da zu einem bestimmten Zeitpunkt nur eine Bedingung wahr sein kann.
Fragen
Bitte wählen Sie unten einen Link aus, um auf das Lektionsquiz zuzugreifen.
Google Doc / .docx / .pdf