لینک کوتاه : https://magicfile.ir/?p=2505
دانلود سورس کد بازی ریورسی Reversi در سی شارپ c#
امروز در این پست برای شما کاربران عزیز یک سورس کد بازی ریورسی Reversi در سی شارپ c# را آماده دانلود قرار داده ایم.
نمونه تصویر در زمان اجرا
مقدمه
این یک پیاده سازی از بازی Reversi است که با زبان سی شارپ نوشته شده است.
زمینه
من در ابتدا این برنامه را به عنوان تمرینی برای یادگیری برنامه نویسی سی شارپ و به طور کلی دات نت نوشتم. Reversi - یا همان طور که شناخته می شود Othello - یک بازی محبوب است که سرگرم کننده است، فقط به چند عنصر اساسی نیاز دارد و قوانین ساده ای دارد. این موضوع آن را به انتخاب خوبی برای یادگیری یک محیط برنامه نویسی جدید تبدیل کرد.
نتیجه یک بازی نسبتا قابل بازی بود، اما برخی از ویژگیهای رایجتر بازیهای رومیزی رایانهای، مانند توانایی لغو حرکات را نداشت. بنابراین، با کسب تجربه بیشتر با دات نت، زمان ارتقا فرا رسید. نتیجه برخی ویژگیهای جدید را اضافه میکند و گرافیک اصلی و هوش مصنوعی را بهبود میبخشد.
با استفاده از کد
فایل های منبع را کامپایل کرده و فایل اجرایی Reversi.exe را برای اجرای بازی اجرا کنید. با استفاده از منو یا نوار ابزار می توانید با گزینه ها و تنظیمات مختلف بازی کنید. سعی کنید اندازه پنجره را تغییر دهید، رنگ ها را تغییر دهید یا طرفین را با رایانه در اواسط بازی تغییر دهید.
ممکن است توجه داشته باشید که برنامه هنگام خروج از آن فایلی به نام Reversi.xml ایجاد می کند. این فایل برای ذخیره تنظیمات مختلف مانند گزینه های بازی، اندازه پنجره، موقعیت و آمار بازیکن استفاده می شود که با اجرای مجدد برنامه بارگذاری مجدد می شوند.
نقاط مورد علاقه
منبع به خوبی توضیح داده شده است، اما برخی از مرورهای کلی به ترتیب هستند.
بازی هوش مصنوعی
بخش خوبی از کد مربوط به محاسبه حرکات برای پخش کننده کامپیوتر است، بنابراین ارزش بحث را دارد. این برنامه از یک الگوریتم استاندارد Min-max look-ahead برای تعیین بهترین حرکت برای رایانه استفاده می کند. هرس آلفا بتا برای بهبود کارایی جستجوی پیش رو استفاده می شود. اگر با الگوریتم min-max و/یا هرس آلفا-بتا آشنایی ندارید، با جستجوی گوگل اطلاعات و مثال های زیادی پیدا خواهید کرد.
به طور طبیعی، تعداد زیادی توالی حرکات ممکن در بازی وجود دارد که بتوان جستجوی جامعی را انجام داد. استثنا در پایان بازی است که در آن مربع های خالی نسبتا کمی باقی مانده است - حدود ده یا دوازده. در این مرحله می توان یک جستجوی کامل انجام داد و می توان حرکتی را با بهترین نتیجه ممکن برای یک بازیکن مشخص پیدا کرد.
اما در بیشتر موارد، عمق نگاه به جلو باید به تعداد معینی از چرخش محدود شود (بر اساس تنظیمات سختی بازی). بنابراین برای هر سری از حرکات ممکن و حرکات متقابل جستجو شده، صفحه بازی حاصل باید ارزیابی شود تا مشخص شود کدام بازیکن بیشترین شانس را برای برنده شدن در بازی دارد. این ارزیابی با محاسبه رتبه با معیارهای زیر انجام می شود:
- فسخ - ترک حریف بدون هیچ حرکت قانونی، او را مجبور میکند که نوبت خود را از دست بدهد، و این به شما مزیت بزرگی میدهد که بتوانید دو (یا بیشتر) بار متوالی حرکت کنید.
- تحرک - این معیاری است که نشان می دهد چند حرکت قانونی می توانید انجام دهید در مقابل تعداد حرکات قانونی که حریف شما باقی می ماند. مشابه با فسخ ، ایده این است که گزینه های حریف خود را کاهش دهید و در عین حال گزینه های خود را به حداکثر برسانید.
- مرز - دیسک مرزی دیسکی است که مجاور یک مربع خالی است. داشتن تعداد زیادی دیسک مرزی، به طور کلی، به حریف شما تحرک بیشتری در پیچ های بعدی می دهد. برعکس، داشتن دیسک های مرزی کمتر به این معنی است که حریف شما بعداً تحرک محدودی خواهد داشت. این امتیاز تعداد دیسک های مرزی شما در مقابل دیسک های حریف را نشان می دهد.
- پایداری - دیسکهای گوشهای پایدار هستند، هرگز نمیتوان از آنها خارج شد. با پیشرفت بازی، دیسک های دیگر نیز پایدار می شوند. این امتیاز تعداد دیسک های پایدار شما در مقابل دیسک های حریف را نشان می دهد.
- امتیاز - این به سادگی تفاوت بین تعداد دیسک های شما روی تخته در مقابل دیسک های حریف است.
به هر یک از این امتیازات وزن های متفاوتی اختصاص داده می شود (باز هم بر اساس تنظیمات سختی فعلی بازی). با ضرب کردن امتیاز هر معیار در وزن متناظر آن و جمع کردن این مقادیر با یکدیگر، به یک تابلو یک رتبه اختصاص داده می شود. یک رتبه منفی بزرگ نشان دهنده یک تابلوی مطلوب برای سیاه است در حالی که یک رتبه مثبت بزرگ نشان دهنده تابلویی مطلوب برای سفید است. بنابراین برای مجموعه ای معین از حرکات ممکن، رایانه یکی را انتخاب می کند که بهترین رتبه را برای رنگ در حال پخش داشته باشد.
یک ثابت به نام maxRank
برای نشان دادن پایان بازی استفاده می شود. مقدار آن تنظیم شده است System.Int32.MaxValue - 64
. این تضمین می کند که هر حرکتی که منجر به پایان بازی شود همیشه رتبه بالاتری (منفی یا مثبت) نسبت به سایر حرکت ها خواهد داشت.
کم کردن 64 از حداکثر مقدار صحیح سیستم به ما این امکان را می دهد که امتیاز نهایی را به رتبه اضافه کنیم تا برد 10 دیسک بالاتر از برد 2 دیسک باشد. این باعث می شود که بازیکن کامپیوتر امتیاز خود را هنگام برنده شدن (یا به حداقل رساندن امتیاز بازیکن حریف در هنگام باخت) به حداکثر برساند.
پیادهسازی کنونی با بازیکنان بهتر هوش مصنوعی همخوانی ندارد، اما در برابر حریف انسانی ضعیف (حداقل، این حریف انسانی ضعیف) بسیار سخت بازی میکند. باز هم، جستجوی گوگل منابع زیادی را پیدا می کند که استراتژی ها و رویکردهای هوش مصنوعی بازی را توصیف می کند
برای شما کاربر عزیز پیشنهاد دانلود داده می شود.