مرد دار

مرد دار

دشوار

دستورالعمل‌ها

منطق بازی Hangman را با برنامه‌نویسی واکنشی تابعی پیاده‌سازی کنید.

Hangman یک بازی ساده‌ی حدس کلمه است.

برنامه‌نویسی واکنشی تابعی روشی برای نوشتن برنامه‌های تعاملی است. تفاوتش با دیدگاه معمول این است که به‌جای اینکه بگویید «وقتی دکمه فشار داده شد، شمارنده را افزایش دهید»، می‌نویسید «مقدار شمارنده برابر است با مجموع تعداد دفعاتی که دکمه فشار داده شده است».

منطق پایه‌ی بازی Hangman را با برنامه‌نویسی واکنشی تابعی پیاده‌سازی کنید. برای این کار باید یک کتابخانه‌ی واکنشی تابعی نصب کنید؛ این موضوع در فایل‌های مخصوص زبان و مسیرِ این تمرین توضیح داده شده است.

رویکردی تازه به تمرین

لطفاً بخش مربوط به کتابخانه‌ی FRP را نادیده بگیرید؛ برای این تمرین به کتابخانه‌ی شخص ثالث نیازی نیست. این تمرین بر برنامه‌نویسی رویدادمحور با استفاده از callbackها و حلقه‌ی رویداد 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 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.