قواعد Pacman

قواعد Pacman

تمرين تعلّمي

مقدمة

القيم المنطقية

يمثّل Elixir القيمتين صحيح وخطأ بنوع منطقي. ولا توجد سوى قيمتين: true وfalse. ويمكن إسناد هاتين القيمتين إلى متغير:

true_variable = true
false_variable = false

يمكننا تقييم تعبيرات منطقية صارمة باستخدام العوامل and/2 وor/2 وnot/1.

true_variable = true and true
false_variable = true and false

true_variable = false or true
false_variable = false or false

true_variable = not false
false_variable = not true

عند كتابة دالة تُرجع قيمة منطقية، من الاصطلاح المتبع أن ينتهي اسم الدالة بالرمز ?. ويمكن اتباع الاصطلاح نفسه مع المتغيرات التي تخزّن قيمًا منطقية.

def either_true?(a?, b?) do
  a? or b?
end

التعليمات

في هذا التمرين، ستحتاج إلى ترجمة بعض القواعد من اللعبة الكلاسيكية Pac-Man إلى دوال بلغة Elixir.

لديك أربع قواعد لترجمتها، وجميعها مرتبطة بحالات اللعبة.

لا تقلق بشأن كيفية اشتقاق الوسائط، ركّز فقط على دمج الوسائط لإرجاع النتيجة المقصودة.

1. عرّف ما إذا كان Pac-Man يأكل شبحًا

عرّف الدالة Rules.eat_ghost?/2 التي تأخذ وسيطين (ما إذا كان لدى Pac-Man حبة طاقة نشطة و_ما إذا كان Pac-Man يلامس شبحًا_) وتُرجع قيمة منطقية إذا كان Pac-Man قادرًا على أكل الشبح. يجب أن تُرجع الدالة صحيحًا فقط إذا كان لدى Pac-Man حبة طاقة نشطة وكان يلامس شبحًا.

Rules.eat_ghost?(false, true)
# => false

2. عرّف ما إذا كان Pac-Man يسجّل نقاطًا

عرّف الدالة Rules.score?/2 التي تأخذ وسيطين (ما إذا كان Pac-Man يلامس حبة طاقة و_ما إذا كان Pac-Man يلامس نقطة_) وتُرجع قيمة منطقية إذا سجّل Pac-Man نقاطًا. يجب أن تُرجع الدالة صحيحًا إذا كان Pac-Man يلامس حبة طاقة أو نقطة.

Rules.score?(true, true)
# => true

3. عرّف ما إذا كان Pac-Man يخسر

عرّف الدالة Rules.lose?/2 التي تأخذ وسيطين (ما إذا كان لدى Pac-Man حبة طاقة نشطة و_ما إذا كان Pac-Man يلامس شبحًا_) وتُرجع قيمة منطقية إذا خسر Pac-Man. يجب أن تُرجع الدالة صحيحًا إذا كان Pac-Man يلامس شبحًا وليس لديه حبة طاقة نشطة.

Rules.lose?(false, true)
# => true

4. عرّف ما إذا كان Pac-Man يفوز

عرّف الدالة Rules.win?/3 التي تأخذ ثلاثة وسائط (ما إذا كان Pac-Man قد أكل كل النقاط، و_ما إذا كان لدى Pac-Man حبة طاقة نشطة_، و_ما إذا كان Pac-Man يلامس شبحًا_) وتُرجع قيمة منطقية إذا فاز Pac-Man. يجب أن تُرجع الدالة صحيحًا إذا كان Pac-Man قد أكل كل النقاط ولم يخسر بناءً على الوسائط المعرّفة في الجزء 3.

Rules.win?(false, true, false)
# => false
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Elixir Exercism

مستعد لبدء قواعد Pacman؟

سجّل في Exercism لتتعلّم وتتقن Elixir عبر 58 مفهومًا168 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.