Skip to main content

Lektion 2: Wenn andere Aussagen

In dieser Lektion erstellen Sie ein Projekt, bei dem der VR-Roboter mindestens zwei Schlösser 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:

Drei Ansichten von oben auf einen Dynamic Castle Crasher Playground, die jeweils unterschiedliche zufällige Anordnungen von Schlössern zeigen, wobei ein VR-Roboter konsequent am unteren Ausgangspunkt positioniert ist.

Lernergebnisse

  • Identifizieren Sie, dass eine if else -Anweisung die Befehle entweder innerhalb des Zweigs "if" oder des Zweigs "else" basierend auf dem gemeldeten booleschen Wert ausführt.
  • Identifizieren Sie, dass eine if else -Anweisung normalerweise mit einer for -Schleife oder einer infinite while -Schleife verwendet  wird, um die Bedingung mehr als einmal zu überprüfen.
  • Identifizieren und beschreiben Sie, warum eine if else -Anweisung mit Schleifen verwendet wird.
  • Beschreiben Sie, was dazu führen würde, dass eine "wenn" -Zweigstelle oder eine "sonst" -Zweigstelle in einem Projekt mit einer " wenn sonst" -Anweisung ausgeführt wird.

Warum eine If Else-Anweisung verwenden?

Die Dynamischer-Schloss-Crasher-Herausforderung unterscheidet sich von der Schloss-Crasher-Herausforderung in Einheit 2. Die Einheit 2-Herausforderung verwendete einfache Sequenzierungs- und Antriebsbefehle, um die Schlösser auf einem statischen Spielplatz umzustoßen.

def main():
	drivetrain.set_drive_velocity(100, PROZENT)
	drivetrain.set_turn_velocity(100, PROZENT)
	drivetrain.drive_for(FORWARD, 1550, MM)
	drivetrain.turn_for(RIGHT, 180, DEGREES)
	drivetrain.drive_for(FORWARD, 700, MM)
	drivetrain.turn_for(RIGHT, 90, DEGREES)

Aufgrund der sich ändernden Layouts des Dynamic Castle Crasher Playgrounds reichen die Drivetrain-Befehle allein jedoch nicht aus, um den VR-Roboter dazu zu bringen, zwei oder mehr Schlösser abzuschlagen. Eine Reihe von Antriebsbefehlen kann auf einem Spielplatz funktionieren, aber nicht auf einem anderen. Es wird ein Algorithmus benötigt, der Sensoren und Auswahl in Iterationen verwendet. Die if else -Anweisung wird verwendet, um einen Algorithmus zu erstellen, indem diesem Projekt eine Auswahl mit bedingten Anweisungen hinzugefügt wird.

Eine Draufsicht auf den Dynamic Castle Crasher Playground zeigt, dass nur einige der Schlösser umgestürzt wurden. Der VR-Roboter befindet sich nach seiner Bewegung um den Spielplatz oben rechts auf dem Spielplatz.

Die If Else-Anweisung

Die if else -Anweisung ist eine Anweisung, die boolesche Bedingungen akzeptiert. Die if else -Anweisung ist eine bedingte Anweisung, die den Ablauf eines Projekts steuert. Die if else -Anweisung führt eine bestimmte Folge von Befehlen aus, wenn die Bedingung erfüllt ist, andernfalls (wenn die Bedingung nicht erfüllt ist) wird ein weiterer Satz von Befehlen ausgeführt  – wodurch der Projektablauf "verzweigt" wird. Es wird immer nur ein Zweig in der if else ausgeführt.

wenn Bedingung:
	pass
else:
	pass
  • Wenn die Bedingung als wahr gemeldet wird, werden die Befehle innerhalb des Zweigs "if" ausgeführt.
  • Wenn die Bedingung als Falsch gemeldet wird, werden die Befehle innerhalb des Zweigs 'else' ausgeführt.
  • Sobald alle Befehle in einem der Zweige ausgeführt werden, fährt das Projekt mit dem nächsten Befehl außerhalb der if else -Anweisung fort.

Wahrscheinlich verwenden Sie Logik oft in Ihren alltäglichen Handlungen. Wenn Sie zum Beispiel aufgrund des Wetters draußen entscheiden, was Sie mitnehmen müssen, wenn Sie das Haus verlassen, können Sie wenn sonst Logik verwenden. Wenn es regnet, nimm einen Regenschirm, sonst nimm eine Sonnenbrille.

Der Zweig „Wenn“ -

  • In diesem Szenario ist die Bedingung „Regen“ erfüllt, sodass der Zweig „wenn“ ausgeführt wird und Sie einen Regenschirm mitnehmen. Auf der linken Seite ist ein Codebeispiel zu lesen, wenn es regnet:, nehmen Sie einen Regenschirm. Nach der if-Anweisung heißt es dann anders: Sonnenbrille mitnehmen. Über dem Code befindet sich eine Regenwolke mit Regentropfen. Auf der rechten Seite befindet sich ein bunter Regenschirm mit Tröpfchen darauf. Gemäß dem Kodex wird die Person bei Regen einen Regenschirm mitnehmen; andernfalls wird sie eine Sonnenbrille mitnehmen.

Die Filiale „Else“ -

  • In diesem Szenario ist die Bedingung "Regen" nicht erfüllt, so dass der Zweig "sonst" ausgeführt würde und Sie eine Sonnenbrille nehmen würden. Auf der linken Seite ist ein Codebeispiel zu lesen, wenn es regnet:, nehmen Sie einen Regenschirm. Nach der if-Anweisung heißt es dann anders: Sonnenbrille mitnehmen. Über dem Code befindet sich eine helle Sonne. Auf der rechten Seite befindet sich eine rote Sonnenbrille. Gemäß dem Kodex wird die Person bei Regen einen Regenschirm mitnehmen; andernfalls wird sie eine Sonnenbrille mitnehmen.

 

Das If Else Statement und das Dynamic Castle Crasher Problem

Es gibt zwei Hauptschritte für den VR-Roboter, um Schlösser auf dem Dynamic Castle Crasher Playground erfolgreich umzustoßen. Im Wesentlichen muss der VR-Roboter in der Lage sein, Schlösser auf dem Spielplatz zu lokalisieren und zu erkennen und sie dann umzuwerfen. In Bezug auf eine if else-Anweisung könnte dies wie folgt formuliert werden:

  1. Wenn der VR-Roboter eine Burg erkennt, fahren Sie nach vorne, um sie umzustoßen.Blick von oben auf den Spielplatz Dynamic Castle Crasher. Das Schloss in der Mitte dieses Spielplatzes ist mit einem roten Kästchen und einem Pfeil markiert, der aus der Ausgangsposition des VR-Roboters darauf zeigt, was darauf hinweist, dass sich der VR-Roboter in Richtung des Schlosses bewegen wird.
  2. Andernfalls (wenn der VR-Roboter keine Burg erkennt), dreh dich um und suche nach einer Burg an einem anderen Ort auf dem Spielplatz.Eine Ansicht von oben auf den Dynamic Castle Crasher Playground mit der mittleren Burg, die durch einen roten Kasten hervorgehoben wird. Die Pfeile um den VR-Roboter zeigen, dass er sich im Uhrzeigersinn dreht, was darauf hinweist, dass sich der Roboter dreht, bis er eine andere Burg sieht.

Der Abstandssensor am VR-Roboter kann verwendet werden, um Schlösser auf diesem Spielplatz zu erkennen. Im Gegensatz zu jedem anderen Spielplatz hat der Dynamic Castle Crasher Playground keine Wände. Da die Schlösser die einzigen Objekte auf dem Dynamic Castle Crasher Playground sind, wird dieses Objekt eine Burg sein, wenn der Abstandssensor ein Objekt erkennt. Der VR-Roboter muss den Zustand des Abstandssensors wiederholt überprüfen, damit der VR-Roboter, sobald diese beiden grundlegenden Schritte abgeschlossen sind, zurückgehen und den Abstandssensor verwenden kann, um die nächste Burg zum Umstürzen zu finden.

Planen eines Projekts mit der If Else-Anweisung

  • Starte ein neues Projekt und wähle den Dynamic Castle Crasher Playground aus, wenn du dazu aufgefordert wirst. Das Miniaturbild für den Dynamic Castle Crasher-Spielplatz bei der Auswahl eines neuen Spielplatzes in VEXcode VR.
  • Benennen Sie das Projekt Unit9Lesson2.
    Die VEXcode VR-Symbolleiste, in der der Projektname rot hervorgehoben ist. Der Projektname lautet Einheit 9 Lektion 2.
  • Fügen Sie Kommentare in den Arbeitsbereich ein, die die Absicht für das Projekt beschreiben, basierend auf den oben genannten Schritten. Der erste Kommentar erklärt die Bedingung der if else -Anweisung, und die nächsten beiden erklären die Aktionen jedes Zweigs der if else -Anweisung. Denken Sie daran, dass Python-Kommentare mit einem # (Pfund) -Symbol beginnen. Ihr Projekt sollte wie folgt aussehen:

    def main():
    	# Erkennt der Abstandssensor eine Burg?
    	
    	# Durch einen Abstandssensor erkannte 	 	Absturzburg
    	
    	# Drehen Sie, um eine Burg mit dem Abstandssensor zu finden
  • Eine if else -Anweisung kann verwendet werden, um jede der oben beschriebenen Aktionen auszulösen. Jede Aktion hängt davon ab, ob die boolesche Bedingung in der if else -Anweisung als wahr oder falsch gemeldet wird. Fügen Sie nach den Kommentaren eine if else-Anweisung hinzu. Ihr Projekt sollte nun so aussehen:

    def main():
    	# Erkennt der Abstandssensor eine Burg?
    	
    	# Absturzburg von einem Abstandssensor erkannt
    	
    	# Drehen Sie, um eine Burg mit dem Abstandssensor zu finden
    	
    	, 	wenn Bedingung:
    		pass
    	else:
    		pass
  • Jeder Zweig der if else -Anweisung kann über die Kommentare definiert werden. Wenn der Abstandssensor eine Burg erkennt, sollte der VR-Roboter fahren, um die Burg umzustoßen; andernfalls sollte er sich drehen, um eine Burg zu erkennen. Verschieben Sie die Zweige if und else des Projekts, um sie mit den Kommentaren auszurichten, die die zugehörigen Aktionen beschreiben. Ihr Projekt sollte nun so aussehen:

    def main():
    	# Erkennt der Abstandssensor eine Burg?
    	
    	wenn Bedingung:
    		# Absturzburg durch einen Entfernungssensor erkannt
    		Pass
    		
    	sonst:
    		# Drehen, um eine Burg mit dem Entfernungssensor
    		Pass zu finden

Wählen Sie die Schaltfläche Weiter um mit dem Rest dieser Lektion fortzufahren.