تمثل Gleam القيم صحيح وخطأ بنوع Bool. لا توجد سوى قيمتين: True وFalse. يمكن ربط هذه القيم بمتغير:
let true_variable = True
let false_variable = False
يمكن استخدام العوامل && و|| و! لمعالجة القيم المنطقية:
True && True // -> True
True && False // -> False
False || True // -> True
False || False // -> False
!False // -> True
!True // -> False
يستخدم العاملان && و|| التقييم قصير الدائرة، مما يعني أن التعبير على الجانب الأيمن من العامل لا يُقيَّم إلا عند الحاجة.
لكل عامل أسبقية مختلفة، حيث يُقيَّم العامل ! قبل && و||. يمكن استخدام الأقواس المعقوفة لتقييم جزء واحد من التعبير قبل الأجزاء الأخرى:
!True && False // -> False
!{True && False} // -> True
في هذا التمرين، عليك ترجمة بعض القواعد من اللعبة الكلاسيكية Pac-Man إلى دوال بلغة Gleam.
لديك أربع قواعد لترجمتها، وكلها متعلقة بحالات اللعبة.
لا تقلق بشأن كيفية اشتقاق الوسائط، ركّز فقط على دمج الوسائط لإرجاع النتيجة المطلوبة.
عرّف الدالة eat_ghost التي تأخذ وسيطين (إذا كانت حبة الطاقة نشطة لدى Pac-Man و_إذا كان Pac-Man يلامس شبحًا_) وتُرجع قيمة منطقية إذا كان Pac-Man قادرًا على أكل الشبح. يجب أن تُرجع الدالة True فقط إذا كانت حبة الطاقة نشطة لدى Pac-Man وكان يلامس شبحًا.
eat_ghost(False, True)
// -> False
عرّف الدالة score التي تأخذ وسيطين (إذا كان Pac-Man يلامس حبة طاقة و_إذا كان Pac-Man يلامس نقطة_) وتُرجع قيمة منطقية إذا سجّل Pac-Man نقاطًا. يجب أن تُرجع الدالة True إذا كان Pac-Man يلامس حبة طاقة أو نقطة.
score(True, True)
// -> True
عرّف الدالة lose التي تأخذ وسيطين (إذا كانت حبة الطاقة نشطة لدى Pac-Man و_إذا كان Pac-Man يلامس شبحًا_) وتُرجع قيمة منطقية إذا خسر Pac-Man. يجب أن تُرجع الدالة True إذا كان Pac-Man يلامس شبحًا ولم تكن لديه حبة طاقة نشطة.
lose(False, True)
// -> True
عرّف الدالة win التي تأخذ ثلاثة وسائط (إذا كان Pac-Man قد أكل كل النقاط، و_إذا كانت حبة الطاقة نشطة لدى Pac-Man_، و_إذا كان Pac-Man يلامس شبحًا_) وتُرجع قيمة منطقية إذا فاز Pac-Man. يجب أن تُرجع الدالة True إذا كان Pac-Man قد أكل كل النقاط ولم يخسر وفقًا للوسائط المعرّفة في الجزء 3.
win(False, True, False)
// -> False
سجّل في Exercism لتتعلّم وتتقن Gleam عبر 33 مفهومًا122 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.