ট্র্যাক
/
Tcl
Tcl
/
অনুশীলনী
/
হ্যাংম্যান
হ্যাংম্যান

হ্যাংম্যান

কঠিন

নির্দেশনা

ফাংশনাল রিয়্যাকটিভ প্রোগ্রামিং ব্যবহার করে হ্যাংম্যান গেমের লজিক ইমপ্লিমেন্ট করুন।

হ্যাংম্যান একটি সহজ শব্দ-অনুমানের গেম।

ফাংশনাল রিয়্যাকটিভ প্রোগ্রামিং হলো ইন্টারঅ্যাকটিভ প্রোগ্রাম লেখার একটি উপায়। এটি প্রচলিত দৃষ্টিভঙ্গির থেকে এভাবে আলাদা যে, আপনি "বোতাম চাপলে কাউন্টার বাড়াও" না লিখে লেখেন "কাউন্টারের মান হলো বোতামটি যতবার চাপা হয়েছে সেই সংখ্যার যোগফল।"

ফাংশনাল রিয়্যাকটিভ প্রোগ্রামিং ব্যবহার করে হ্যাংম্যানের মূল লজিক ইমপ্লিমেন্ট করুন। এর জন্য আপনাকে একটি FRP লাইব্রেরি ইনস্টল করতে হবে; অনুশীলনীর ভাষা বা ট্র্যাকভিত্তিক ফাইলগুলোতে এটি বর্ণনা করা আছে।

অনুশীলনীর নতুন পদ্ধতি

FRP লাইব্রেরি সংক্রান্ত অংশটি অনুগ্রহ করে উপেক্ষা করুন। এই অনুশীলনীর জন্য কোনো থার্ড-পার্টি লাইব্রেরি প্রয়োজন নেই। এই অনুশীলনীতে কলব্যাক এবং Tcl-এর ইভেন্ট লুপ ব্যবহার করে ইভেন্ট-ড্রিভেন প্রোগ্রামিং-এর উপর গুরুত্ব দেওয়া হয়েছে।

আপনাকে একটি TCP সার্ভার এবং একটি ডোমেইন-নির্দিষ্ট প্রোটোকল তৈরি করতে হবে। যে শব্দটি অনুমান করতে হবে, সেটি দিয়েই এই সার্ভারটি চালু করা হয়। টেস্ট স্ক্রিপ্টটি ক্লায়েন্ট বাস্তবায়ন করে, যা সার্ভারে কমান্ড পাঠায়।

ডোমেইন-নির্দিষ্ট প্রোটোকল

যে প্রোটোকল কমান্ডগুলো বাস্তবায়ন করতে হবে:

  • STATUS গেমের বর্তমান অবস্থা রিটার্ন করে। রেসপন্সটি তিনটি এলিমেন্টের একটি লিস্ট হবে:
    1. বাকি থাকা ভুল অনুমানের সংখ্যা,
    2. অনুমান না করা অক্ষরগুলোর জন্য আন্ডারস্কোর দিয়ে মাস্ক করা শব্দ, এবং
    3. একটি স্টেটাস ফিল্ড ("ongoing", "win" বা "lose")
  • GUESS x, যেখানে x হলো অনুমান করার একটি অক্ষর। প্রতিটি অনুমানের পরে সার্ভার স্টেটাস লিস্ট দিয়ে রেসপন্স করবে।
  • SHUTDOWN দূর থেকে সার্ভার বন্ধ করতে। অন্যথায় জয় বা পরাজয়ের পরে সার্ভার নিজেই বন্ধ হয়ে যাবে।

সার্ভারটি যেন বড়-ছোট হাতের অক্ষরের পার্থক্য না করেই এই কমান্ডগুলো প্রসেস করতে পারে।

সার্ভার কোন পোর্ট ব্যবহার করে?

আপনার সার্ভার পোর্ট নম্বর 0 দিয়ে চালু করুন: Tcl একটি অব্যবহৃত পোর্ট খুঁজে নেবে, তাই টেস্ট স্ক্রিপ্টে পোর্ট নম্বর হার্ডকোড করতে হবে না। একটি প্রসেসে চলা সব ইন্টারপ্রেটার (থ্রেডসহ) একই এনভায়রনমেন্ট ভাগ করে নেয়, তাই সার্ভার গ্লোবাল env অ্যারে ব্যবহার করে টেস্ট স্ক্রিপ্টকে তার পোর্ট জানাতে পারে। শুরুর hangman.tcl ফাইলে একটি উদাহরণ আছে।

ইঙ্গিত

আপনার এই Tcl কমান্ডগুলো লাগবে: socket, fileevent, vwait।

এই উদাহরণ সকেট প্রোগ্রাম দিয়ে আপনি শুরু করতে পারেন।

GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Tcl Exercism

হ্যাংম্যান শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, Tcl ট্র্যাকের 135টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।