دورة تطوير بايثون المتقدمة
الفصل
>
المستوى
غير متزامن/انتظار
مراجعة غير متزامنة
الهدف
توثيق إنتاج زجاجات النبيذ باستخدام الدوال غير المتزامنة عن طريق التحقق من الحصة وإتمام نقع عنب النبيذ.
يجب تحقيق إنتاج زجاجات النبيذ لضمان قدرة القبو على إنتاج عدد كافٍ من الزجاجات للتخزين. من أجل تحقيق ذلك، يجب نقع عنب النبيذ لضمان معالجة كل شيء للتخمر وتحويله إلى نبيذ.
أولاً، توجه إلى علامة (X) الداكنة بدون سجادة أمام ورقة، تحتوي هذه الملاحظة على معلومات حول حصة الإنتاج التي يجب تحقيقها بالإضافة إلى ملاحظات حول الثمار المنقوعة. استخدم دالة read() للتحقق من الحصة وتدوين قيم عنب النبيذ وتخزينها في متغير يسمى quota.
بمجرد أن تعرف المطلوب، توجه إلى علامات (X) الفاتحة وواجه الصناديق للتحقق من كمية المنتج الجاهز للمعالجة. استخدم دالة read() على كلاهما للتحقق من محتويات العناصر الجاهزة. أنشئ متغيرًا يسمى wine_berries واجمع الكميات التي قرأتها من كلا العلامتين.
لن تكون كمية المنتج المُنجزة كافية لتحقيق الحصة، توجه إلى علامة (X) الذهبية في أسفل الجهة اليمنى وواجه الأكياس. استخدم دالة collect() لالتقاط الثمار من الأكياس ثم توجه إلى علامات (X) الداكنة فوق السجاد.
هناك أربعة (4) أواني نقع للثمار لاستخدامها في إنتاج النبيذ، وفي الوثيقة المقروءة يظهر أي الأواني جاهزة للتجميع وأيها يحتاج إلى نقع الثمار. استخدم دالة question() للتحقق مما إذا كنت تريد جمع عنب النبيذ المنقوع أو نقع الثمار في الإناء. على السجاد الأخضر والأصفر مع علامات (X) الداكنة تحتاج إلى جمع الثمار، وعلى السجاد البنفسجي والأزرق مع علامات (X) الداكنة يجب وضع الثمار.
الدالة question() اللازمة للحصول على المنتج مكتوبة في محرر الأكواد وتسمى soaking_pot() :
async def soaking_pot():
answer = await player.question("Collect berries instead of soaking them?")
if answer:
player.collect("wine berries")
else:
player.place("berries")
بمجرد جمع عنب النبيذ، توجه إلى علامة (X) الذهبية على الجهة اليسرى بجوار براميل الثمار واستخدم دالة place() لإضافة "wine berries" التي جمعتها. على المتغير الذي أنشأته wine_berries، أضف 100 رطل من المنتج، أي 50 لكل من المنتجات التي جمعتها سابقًا. يتم ذلك بالشكل التالي: wine_berries+=100
انتقل إلى علامات (X) الداكنة مع سجاد أحمر وبرتقالي، على علامة (X) على السجاد الأحمر استخدم دالة write() وأضف كمية wine_berries المتوفرة حتى الآن كما يلي: player.write("There are %d pounds of product finished" % (wine_berries))
على علامة (X) على السجاد البرتقالي استخدم دالة write() لكتابة المنتج الذي لم يكتمل بعد. من أجل إكمال المستوى، اطرح wine_berries من quota أثناء الكتابة لتحديد العناصر المتبقية، كما يلي: player.write("There are %d pounds of product Remaining" % (quota-wine_berries))