نفّذ منطق لعبة Hangman باستخدام البرمجة التفاعلية الوظيفية.
Hangman لعبة بسيطة لتخمين الكلمات.
البرمجة التفاعلية الوظيفية طريقة لكتابة البرامج التفاعلية. وهي تختلف عن المنظور المعتاد: فبدلًا من أن تقول «عند الضغط على الزر، زد العدّاد»، تكتب «قيمة العدّاد هي مجموع عدد مرات الضغط على الزر».
نفّذ المنطق الأساسي الكامن وراء لعبة Hangman باستخدام البرمجة التفاعلية الوظيفية. ستحتاج إلى تثبيت مكتبة FRP للقيام بذلك، وسيُشرح هذا في ملفات هذا التمرين الخاصة باللغة والمسار.
أحد أهم جوانب البرمجة الوظيفية هو أن تكون الدوال خالية من الآثار الجانبية، فلا تضطر إلى التساؤل عن الكائنات الخفية التي غيّرتها إحدى الدوال.
في البرمجة التفاعلية، بدلًا من أن يبحث أحد المكوّنات عن العمل بنشاط، يُدفع هذا العمل إلى المكوّن. وهذا يشبه دوال رد النداء، لكن على مستوى أعلى بكثير، وبتجريدات أقوى. وكثيرًا ما تُستخدم البرمجة التفاعلية إلى جانب البرمجة الوظيفية.
في هذا التمرين سنستخدم RxJava، وهي مكتبة معروفة للبرمجة التفاعلية بواجهة API في Java.
السياق المُحاكى لهذا التمرين هو تطبيق يستقبل مُدخَلين:
هذان المُدخَلان مُنفَّذان بـ Observables، باستخدام الصنف io.reactivex.Observable.
بشكل أساسي، يمكنك الاشتراك في Observable لكي "تتفاعل" مع القيم التي تُنتَج في مكان ما. على سبيل المثال، يدفع محرك اللعبة كلمات جديدة عندما يكتشف أن لعبة جديدة قد بدأت، أو تولّد أحداث لوحة المفاتيح مُدخَلات من الحروف.
لكن كثيرًا من أطر العمل التفاعلية تقدّم تجريدات قوية، مثل map الذي يتيح لك تغيير المُدخَل المستلَم، أو combine الذي يتيح لك دمج Observable واحد أو أكثر معًا.
الصنف Output هو النتيجة المتوقعة من معالجة التمرين، وهو ما يتيح لـ front-end عرض الحالة الكاملة للعبة دون أن يطلب منه أي شكل من أشكال التخزين، مما يجعله وظيفيًا أيضًا.
في هذا التمرين، عليك أن تجد أسلوبًا لاستخدام كلا المُدخَلين لتوليد هذا الإخراج على هيئة Observable.
سجّل في Exercism لتتعلّم وتتقن Java عبر 26 مفهومًا158 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.