دورة تطوير بايثون المتقدمة
الفصل
>
المستوى
الفصول المتقدمة
تحميل المُعاملات
الهدف
عد كمية النبيذ التي يتم تنقيتها باستخدام المتجهات وتحميل العمليات.
بعد عصر النبيذ يجب تصفيته وتنقيته، هناك عدة براميل يتم تصفيتها ويجب شطفها جميعًا. من المهم عد كمية النبيذ المنتجة حتى يمكن إغلاق البراميل وتعتيقها.
للقيام بذلك عليك إنشاء متجهات وجمعها معًا، وهي مشابهة للقوائم ولكنها ليست مرنة مثلها ومع ذلك فهي أكثر كفاءة في استخدام الذاكرة. عادةً ما تُستخدم للتعامل مع الإحداثيات، وفي هذه الحالة سنستخدمها كمتغيرات تحتفظ بأكثر من قيمة. يتم جمع المتجهات معًا باستخدام تحميل العمليات الذي يوسع وظائف كائنات الصفوف بحيث يمكنك استخدام العمليات معها كما تفعل على القيم العادية.
لبداية، قم بالمشي وجمع علب المياه المعدنية الموجودة في أعلى الغرفة، سيتم استخدامها للمساعدة في شطف النبيذ الذي يتم تصفيته في البراميل. وبعد جمعها، توجه إلى علامة X الداكنة فوق السجاد الأحمر، واجه البرميل وابدأ في تحويل محتويات كل برميل إلى متجهات.
علامات X مرتبة في مجموعات من ثلاثة (3) لكل لون من السجاد، علامة X ذهبية، وعلامة X فاتحة، وعلامة X داكنة. على كل علامات X الداكنة والفاتحة استخدم دالة water() للمساعدة في شطف البراميل. وأيضًا على كل علامات X الداكنة والفاتحة، استخدم دالة read() لمعرفة كمية النبيذ التي تتم معالجتها في ذلك العمود من البراميل. على علامة X الذهبية تستخدم دالة write() لتدوين إجمالي الكميات معًا.
في محرر الشيفرة هناك صف يُسمى vector، يُستخدم ليس فقط لإنشاء متجه بل أيضًا لجمعه معًا. أنشئ كائنات vector لتخزين البيانات المستخلصة من علامات X الفاتحة والداكنة، على سبيل المثال، على سجاد الأحمر يتم تصفية النبيذ الأحمر:
# Create object using data from dark X mark red_wine_dark = vector(345, 272) # Create object using data from light X mark red_wine_light = vector(248, 432) # Add together vectors for totals red_wine_total = red_wine_dark + red_wine_light
في المتجه، يُطلق على الموضع الأول اسم x والثاني اسم y، والصيغة تكون كالتالي: object_name = vector(x,y). هذا ذو صلة بملء المتجهات بالمعلومات المكتسبة من دالة read().
على علامات X الذهبية استخدم دالة write() لكتابة الإجمالي لكل مجموعة من المتجهات، على سبيل المثال، في حالة علامات X على السجاد الأحمر تكون مكتوبة كما يلي:
await player.write( "There is a total of %s pounds on the left barrels and %s pounds on the right barrels" % (red_wine_total.x, red_wine_total.y)
تذكر إضافة .x و .y في نهاية الإجمالي لتحديد قيم كل متجه.
بالنسبة لكل مجموعة من السجاد الملون هناك نوع مختلف من النبيذ يتم تصفيته. على سبيل المثال، في السجاد الأحمر يتم تصفية red_wine؛ وعلى سجاد الأصفر يتم تصفية sparkling_wine؛ وعلى سجاد الأخضر يتم تصفية white_wine؛ وعلى سجاد البرتقالي يتم تصفية orange_wine.
بمجرد أن يتم شطف جميع علامات X الفاتحة والداكنة باستخدام دالة water() وتدوين جميع العلامات على علامات X الذهبية للإجماليات، ستكون قد أكملت المستوى.