ফাংশনাল রিয়্যাকটিভ প্রোগ্রামিং ব্যবহার করে হ্যাংম্যান গেমের লজিক ইমপ্লিমেন্ট করুন।
হ্যাংম্যান একটি সহজ শব্দ-অনুমানের গেম।
ফাংশনাল রিয়্যাকটিভ প্রোগ্রামিং হলো ইন্টারঅ্যাকটিভ প্রোগ্রাম লেখার একটি উপায়। এটি প্রচলিত দৃষ্টিভঙ্গির থেকে এভাবে আলাদা যে, আপনি "বোতাম চাপলে কাউন্টার বাড়াও" না লিখে লেখেন "কাউন্টারের মান হলো বোতামটি যতবার চাপা হয়েছে সেই সংখ্যার যোগফল।"
ফাংশনাল রিয়্যাকটিভ প্রোগ্রামিং ব্যবহার করে হ্যাংম্যানের মূল লজিক ইমপ্লিমেন্ট করুন। এর জন্য আপনাকে একটি FRP লাইব্রেরি ইনস্টল করতে হবে; অনুশীলনীর ভাষা বা ট্র্যাকভিত্তিক ফাইলগুলোতে এটি বর্ণনা করা আছে।
ফাংশনাল প্রোগ্রামিংয়ের একটি প্রধান দিক হলো সাইড এফেক্টমুক্ত ফাংশন রাখা, যাতে কোন লুকানো অবজেক্ট একটি ফাংশন পরিবর্তন করেছে তা নিয়ে ভাবতে না হয়।
রিঅ্যাকটিভ প্রোগ্রামিংয়ে, একটি কম্পোনেন্ট সক্রিয়ভাবে কাজ খোঁজার বদলে কাজটি ওই কম্পোনেন্টের কাছেই পাঠিয়ে দেওয়া হয়। এটি কলব্যাকের মতোই, তবে অনেক উচ্চ স্তরে, আরও শক্তিশালী অ্যাবস্ট্রাকশন নিয়ে। অনেক সময়ই রিঅ্যাকটিভ প্রোগ্রামিং ফাংশনাল প্রোগ্রামিংয়ের সাথে মিলিয়ে ব্যবহার করা হয়।
এই অনুশীলনীতে আমরা RxJava ব্যবহার করব, যা Java API-সহ রিঅ্যাকটিভ প্রোগ্রামিংয়ের একটি সুপরিচিত লাইব্রেরি।
এই অনুশীলনীর সিমুলেট করা প্রেক্ষাপট হলো এমন একটি অ্যাপ্লিকেশন, যা দুটি ইনপুট পায়:
ঐ দুটি ইনপুট Observables দিয়ে বাস্তবায়ন করা হয়েছে, অর্থাৎ ক্লাসটি io.reactivex.Observable ব্যবহার করে। মূলত, কোথাও তৈরি হওয়া মানগুলোয় "প্রতিক্রিয়া জানাতে" আপনি একটি Observable-এ সাবস্ক্রাইব করতে পারেন। যেমন, কোনো নতুন গেম শুরু হয়েছে বলে গেম ইঞ্জিন শনাক্ত করলে সেটি নতুন শব্দ পাঠায়, অথবা কিবোর্ড ইভেন্ট থেকে অক্ষরের ইনপুট তৈরি হয়।
কিন্তু অনেক রিঅ্যাকটিভ ফ্রেমওয়ার্ক শক্তিশালী অ্যাবস্ট্রাকশন দেয়, যেমন map, যা দিয়ে পাওয়া ইনপুট বদলাতে পারেন, বা combine, যা দিয়ে এক বা একাধিক Observable একসাথে মেলাতে পারেন।
Output ক্লাসটি এই অনুশীলনীর প্রক্রিয়াকরণের প্রত্যাশিত ফলাফল, যা দিয়ে একটি front-end তার কাছে কোনো রকম স্টোরেজ রাখার দরকার ছাড়াই খেলার সম্পূর্ণ অবস্থা দেখাতে পারে, ফলে এটিও ফাংশনাল হয়ে ওঠে।
এই অনুশীলনীতে আপনাকে এমন একটি উপায় খুঁজে বের করতে হবে, যাতে দুটি ইনপুট ব্যবহার করে একটি Observable আকারে এই আউটপুট তৈরি করা যায়।
Exercism-এ সাইন আপ করুন, Java ট্র্যাকের 26টি কনসেপ্ট158টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।