منطق بازی Hangman را با برنامهنویسی واکنشی تابعی پیادهسازی کنید.
Hangman یک بازی سادهی حدس کلمه است.
برنامهنویسی واکنشی تابعی روشی برای نوشتن برنامههای تعاملی است. تفاوتش با دیدگاه معمول این است که بهجای اینکه بگویید «وقتی دکمه فشار داده شد، شمارنده را افزایش دهید»، مینویسید «مقدار شمارنده برابر است با مجموع تعداد دفعاتی که دکمه فشار داده شده است».
منطق پایهی بازی Hangman را با برنامهنویسی واکنشی تابعی پیادهسازی کنید. برای این کار باید یک کتابخانهی واکنشی تابعی نصب کنید؛ این موضوع در فایلهای مخصوص زبان و مسیرِ این تمرین توضیح داده شده است.
لطفاً بخش مربوط به کتابخانهی FRP را نادیده بگیرید؛ برای این تمرین به کتابخانهی شخص ثالث نیازی نیست. این تمرین بر برنامهنویسی رویدادمحور با استفاده از callbackها و حلقهی رویداد Tcl تمرکز دارد.
شما باید یک سرور TCP و یک پروتکل دامنهای بسازید. این سرور با کلمهای که باید حدس زده شود راهاندازی میشود. اسکریپت تست، کلاینتی را پیادهسازی میکند که فرمانها را به سرور میفرستد.
فرمانهای پروتکل که باید پیادهسازی شوند عبارتاند از:
STATUS برای برگرداندن وضعیت فعلی بازی. پاسخ یک فهرست سهعنصری خواهد بود:
GUESS x که در آن x حرفی است که باید حدس زده شود. سرور پس از هر حدس، فهرست وضعیت را برمیگرداند.SHUTDOWN برای خاموش کردن سرور از راه دور. در غیر این صورت، سرور پس از برد یا باخت خارج میشود.سرور باید بتواند این فرمانها را بدون توجه به بزرگ یا کوچک بودن حروف پردازش کند.
سرور خود را با شمارهی پورت 0 راهاندازی کنید: Tcl یک پورت استفادهنشده پیدا میکند، بنابراین لازم نیست شمارهی پورتی را بهصورت ثابت در اسکریپت تست قرار دهیم. همهی مفسرهایی که در یک فرایند اجرا میشوند (از جمله ریسهها) محیط یکسانی دارند، بنابراین سرور میتواند پورت خود را با استفاده از آرایهی سراسری env به اسکریپت تست برگرداند. نمونهای در فایل اولیهی hangman.tcl وجود دارد.
به این فرمانهای Tcl نیاز پیدا خواهید کرد:
socket,
fileevent,
vwait.
این برنامهی نمونهی سوکت میتواند شروع کار را برایتان آسان کند.