Fortgeschrittener Python-Entwicklungskurs
Kapitel
>
Stufe
Async/Await
Frage erstellen
Ziel
Sammle verschiedene Küchenmaterialien und bereite dich aufs Kochen vor, indem du „Fragen“ stellst.
Es gibt verschiedene Küchen- und Nahrungsmaterialien, die vorbereitet und später genutzt sowie verzehrt werden sollen. Um dies zu erleichtern, kannst du eine question()-Funktion einrichten. Diese ist eine async Funktion, ähnlich wie write(), aber anstatt eine statische Nachricht anzuzeigen, kannst du eine Frage mit den Optionen „Ja“ und „Nein“ präsentieren.
Um die question()-Funktion einzurichten, musst du außerdem eine benutzerdefinierte Funktion erstellen, um Bedingungen zu handhaben. Diese Funktion muss zu Beginn async enthalten, um sie als async Funktion zu kennzeichnen. Innerhalb wird die question()-Funktion in einer Variablen gespeichert und die Funktion hat, wie die anderen async Funktionen, await vorangestellt. Als Argument nimmt die question()-Funktion einen String mit der Frage, die du stellen möchtest.
async def question_function():
answer = await player.question("Question you would like to ask")
if answer:
# Actions to take if answer is Yes
else:
# Actions to take if answer is No
Innerhalb der Funktion wirst du eine if-Anweisung haben, die bestimmt, welche Aktion ausgeführt wird, wenn die Antwort wahr oder falsch ist. Die benutzerdefinierten Fragefunktionen werden im Code-Editor eingerichtet und erlauben es dir, mehrere Elemente aus einer einzigen Quelle zu sammeln und/oder zu platzieren.
Die in der Küche vorzubereitenden Elemente sind: "water", "ice", "meat" und "potato". Diese Elemente müssen gesammelt und in verschiedenen Bereichen der Küche platziert werden. Das "ice" muss in einen Gefrierschrank gelegt werden, das "water" muss in den Topf gegeben werden, und sowohl das "meat" als auch die "potato" müssen in unterschiedliche Öfen gestellt werden.
Gehe zunächst zum goldenen X-Marker im rechten Raum und benutze die benutzerdefinierte Funktion await dispencer(), die im Code-Editor beschrieben ist. Wende dich der Eiskiste zu und benutze die Funktion zweimal (2). Es wird eine Frage gestellt, und du musst mit Yes antworten, um collect() für "ice" auszulösen, und mit No, um collect() für "water" zu aktivieren.
Sobald du beide Elemente gesammelt hast, gehe zum dunklen X-Marker neben dir, vor dem Gefrierschrank, und benutze die place()-Funktion, um das "ice" in den Gefrierschrank zu legen. So: player.place("ice"). Gehe dann zum hellen X-Marker vor einem Sack und benutze die collect()-Funktion, um eine "potato" aufzunehmen, so: player.collect("potato").
Anschließend gehe zum dunklen X-Marker neben dem mittleren Topf und benutze place(), um das gesammelte "water" abzulegen, so: player.place("water"). Sobald das erledigt ist, begebe dich zum hellen X-Marker darüber, vor dem Kühlschrank, und sammle das "meat", so: player.collect("meat").
Nachdem du nun sowohl das "meat" als auch die "potato" gesammelt hast, gehe zu den zwei (2) goldenen X-Markierungen im linken Raum und benutze die benutzerdefinierte Funktion await oven(), die im Editor geschrieben steht. Für die Frage im rechten Ofen musst du die Option bake für die "potato" wählen und für den linken Ofen die Option grill für das "meat", um das Level abzuschließen.