Gelişmiş Python Geliştirme Kursu
Bölüm
>
Seviye
Async/Await
Bir soru hazırlama
Amaç
Çeşitli mutfak malzemelerini topla ve "sorular" oluşturarak pişirmeye hazırla
Daha sonra kullanılacak ve tüketilecek çeşitli mutfak ve yiyecek malzemeleri bulunmaktadır. Bunu kolaylaştırmak için, write() fonksiyonuna benzer şekilde async bir fonksiyon olan fakat statik bir mesaj göstermek yerine “Evet” ve “Hayır” seçenekleriyle bir soru gösterebilen question() fonksiyonunu ayarlayabilirsiniz.
question() fonksiyonunu ayarlamak için, koşulları yönetmek üzere bir özel fonksiyon da oluşturmanız gerekir. Bu fonksiyonun başında async olduğunu belirtmek için async yazılmış olmalıdır. İçeride, question() fonksiyonu bir değişkenin içine atanır ve diğer async fonksiyonlar gibi fonksiyonun önünde await yazılmıştır. Argüman olarak, question() fonksiyonuna soracağınız soruyu içeren bir dize geçirilir.
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
Fonksiyon içerisinde, cevabın doğru veya yanlış olmasına göre hangi işlemin yapılacağına karar veren bir if ifadesi bulunur. Bu özel soru fonksiyonları, kod editöründe ayarlanacak olup, tek bir kaynaktan birden fazla öğe toplayabilmenizi veya yerleştirmenizi sağlayacaktır.
Mutfakta hazırlanması gereken öğeler: "water", "ice", "meat" ve "potato". Bu öğeler toplanıp mutfaktaki farklı alanlara yerleştirilmelidir. "ice" bir dondurucuya, "water" bir tencereye, "meat" ve "potato" ise farklı fırınlara yerleştirilmelidir.
Öncelikle, sağ odadaki altın X işaretine doğru yürüyün ve kod editöründe belirtilen await dispencer() özel fonksiyonunu kullanın. Buz kutusunun karşısına dönün ve fonksiyonu iki (2) kez kullanın. Size bir soru sorulacak ve "ice"'ı toplamak için collect() fonksiyonunda Yes, "water"'ı toplamak için ise No cevabını vermelisiniz.
Bu iki öğeyi topladıktan sonra, dondurucunun önündeki yanınızdaki karanlık X işaretine gidin ve place() fonksiyonunu kullanarak dondurucunun içine "ice"'ı yerleştirin. Bu şekilde: player.place("ice"). Ardından, bir çuvalın önündeki açık X işaretine inip collect() fonksiyonuyla player.collect("potato") şeklinde bir "potato" alın.
Sonrasında, orta tencerenin yanındaki karanlık X işaretine gidin ve topladığınız "water"'ı player.place("water") şeklinde place() fonksiyonunu kullanarak yerleştirin. İşiniz bittikten sonra, üzerindeki açık X işaretine, bu sefer buzdolabının önüne gidip player.collect("meat") şeklinde "meat" toplayın.
Artık hem "meat" hem de "potato"'yu topladığınıza göre, sol odadaki iki (2) altın X işaretine gidin ve editörde yazılı olan await oven() özel fonksiyonunu kullanın. Sağ fırında sorulan soruda, "potato"yu pişirmek (bake) için cevabı seçmeli ve sol fırında ise "meat"i ızgara yapmak (grill) için cevabı seçmelisiniz ki seviye tamamlanabilsin.