بازی فکر بکر (Mastermind) به زبان C
در این بخش پیاده سازی بازی Mastermind به زبان سی به همراه داکیومنت آماده کرده ایم که یک بازی چالش فکری و رمزگشایی برای دو بازیکن است که در ادامه به معرفی تئوری بازی، قوانین و ساختار برنامه پرداخته شده است.
معرفی بازی فکر بکر (Mastermind)
بازی فکر بکر (Mastermind) یک بازی فکری و منطقی دو نفره است که در آن یکی از بازیکنان یک رمز مخفی را انتخاب کرده و بازیکن دیگر تلاش میکند تا آن را با استفاده از سرنخهای دادهشده کشف کند. این بازی در دهه 1970 معرفی شد و از آن زمان به یکی از محبوبترین بازیهای فکری تبدیل شده است. نسخهی کلاسیک آن شامل یک صفحهی بازی، چندین میخ رنگی بهعنوان کدها و مجموعهای از میخهای کوچکتر برای ارائهی بازخورد است.
در این بازی هوش مصنوعی بازیکن اول (رمزگذار) یک ترکیب مخفی از چند مهرهی رنگی را در پشت صفحهی بازی قرار میدهد. تعداد رنگها و جایگاه آنها باید طبق قوانین بازی باشد. سپس بازیکن دوم (رمزشکن) تلاش میکند با حدسهای متوالی، ترکیب صحیح را کشف کند. پس از هر حدس، رمزگذار با استفاده از مهرههای کوچک سیاه و سفید به او بازخورد میدهد: مهرهی سیاه نشاندهندهی یک رنگ صحیح در جایگاه درست و مهرهی سفید نشاندهندهی یک رنگ صحیح اما در جایگاه نادرست است.
بازی ادامه پیدا میکند تا زمانی که رمزشکن بتواند ترکیب مخفی را درست حدس بزند یا تعداد تلاشهای مجاز او به پایان برسد. این بازی نیازمند مهارتهای استدلال منطقی، تحلیل الگوها و پردازش اطلاعات است و به بازیکنان کمک میکند تا قدرت تفکر انتقادی و حل مسئلهی خود را تقویت کنند. نسخههای مختلفی از این بازی وجود دارد که شامل تغییراتی در تعداد جایگاهها، رنگها و قوانین بازخورد میشود تا تنوع و چالش بیشتری ایجاد کند.
علاوه بر نسخهی فیزیکی، بازی فکر بکر امروزه در قالب نسخههای دیجیتالی نیز در دسترس است و روی پلتفرمهای مختلف از جمله موبایل و کامپیوتر قابل بازی است. بسیاری از افراد این بازی را برای تقویت مهارت های تحلیلی و تمرین تفکر منطقی استفاده میکنند. همچنین، این بازی در آموزش مفاهیم پایه رمزنگاری و الگوریتمهای جستجو نیز کاربرد دارد. به دلیل قوانین ساده اما عمق استراتژیک بالا، فکر بکر یکی از محبوبترین بازی های فکری در سراسر جهان محسوب میشود.
هدف برنامه
این پروژه بازی یک نسخه ساده از بازی فکر بکر (Mastermind) یا مستر مایند را با زبان C پیاده سازی میکند. در این بازی، یک رمزساز (کامپیوتر) یک کد مخفی ۴ رقمی ایجاد میکند و رمزشکن (کاربر) باید این کد را در حداکثر ۱۰ تلاش حدس بزند. پس از هر حدس، بازخوردی شامل تعداد مهرههای سیاه (جایگاه و عدد صحیح) و سفید (عدد صحیح اما جایگاه اشتباه) به کاربر داده میشود.
قوانین بازی:
- رمزساز یک کد ۴ رقمی با اعداد بین ۱ تا ۶ ایجاد میکند.
- رمزشکن باید کد را در حداکثر ۱۰ تلاش حدس بزند.
- پس از هر حدس، بازخورد شامل تعداد مهرههای سیاه و سفید نمایش داده میشود.
- اگر کاربر کد را در ۱۰ تلاش یا کمتر حدس بزند، برنده میشود. در غیر این صورت، رمزساز برنده است.
ساختار برنامه:
برنامه به زبان C نوشته شده و شامل توابع و متغیرهای زیر است:
تعاریف ثابتها:
- CODE_LENGTH: طول کد مخفی (۴ رقم).
- MAX_ATTEMPTS: حداکثر تعداد تلاشهای کاربر (۱۰ تلاش).
- NUM_COLORS: محدوده اعداد مجاز برای کد (۱ تا ۶).
توابع برنامه:
تابع generateSecretCode :
- وظیفه: تولید یک کد مخفی ۴ رقمی با اعداد بین ۱ تا ۶.
پارامترها:
- secretCode[]: آرایهای که کد مخفی در آن ذخیره میشود.
- توضیحات: این تابع از تابع rand() برای تولید اعداد تصادفی استفاده میکند.
تابع getGuess :
- وظیفه: دریافت حدس کاربر به صورت یک کد ۴ رقمی.
پارامترها:
- Guess[] : آرایهای که حدس کاربر در آن ذخیره میشود.
- توضیحات: کاربر باید ۴ عدد بین ۱ تا ۶ وارد کند.
تابع evaluateGuess :
- وظیفه: ارزیابی حدس کاربر و محاسبه تعداد مهرههای سیاه و سفید.
پارامترها:
- secretCode[]: کد مخفی
- Guess[]: حدس کاربر
- *blackPegs: تعداد مهرههای سیاه (جایگاه و عدد صحیح)
- *whitePegs: تعداد مهرههای سفید (عدد صحیح اما جایگاه اشتباه)
توضیحات: این تابع با مقایسه کد مخفی و حدس کاربر، بازخورد مناسب را محاسبه میکند.
تابع main :
- وظیفه: اجرای اصلی بازی.
- توضیحات: این تابع کد مخفی را تولید میکند، حدسهای کاربر را دریافت میکند، و بازخورد را نمایش میدهد. اگر کاربر کد را حدس بزند یا تعداد تلاشها به پایان برسد، بازی خاتمه مییابد.
نحوه اجرای برنامه
برنامه را در یک محیط کامپایلر زبان C مثل نرم افزار DevC++ یا CodeBlocks و یا … کامپایل و ران کنید.
- مثال اجرای برنامه
ورودی:
خروجی:
هیچ نظری ثبت نشده است