راستش این یه برنامه خیلی پیچیده هست که هم توضیحش از حد وقت و حوصله من خارجه و هم خوندن توضیحات من از وقت و حوصله شما خارجه .
یه مثال خیلی کوچک رو از این موتور به صورت خیلی مختصر براتون توضیح میدم :
تابع تشخیص Mate Position
این تابع وقتی صدا زده میشه که موتور اعلان کیش رو دریافت میکنه ، این اعلان به ناظر اطلاع داده میشه ( ناظر یه تابع ه که روند بازی رو کنترل می کنه تا تمام قوانین شطرنج پیاده به درستی اجرا بشن ) ناظر Position و تعدادی اطلاعات کلیدی رو به تابع تشخیص مات ارجاع میده که این تابع به این صورت فرمان دریافتی رو برسی می کنه :
1- کیش توسط چه مهره ای انجام شده است ؟
2- کیش از چه نوعی است ؟ ( یک طرفه یا دو طرفه )
اگر کیش یک طرفه است :
بررسی راه های ممکنه برای فرار شاه ، دفاع شاه و حذف مهره کیش کننده
اگر کیش دو طرفه است :
بررسی راه های ممکنه برای فرار شاه
و در نهایت اعلام می کنه که این Position مات هست یا خیر ؟!
همون طور که ملاحظه می فرمایید ، به نظر خیلی ساده است ولی همین روند ساده روزها کار می برده تا تکمیل بشه و باور بفرمایید که این فقط یکی از ساده ترین کارهایی ه که این موتور انجام میده .
این موتور برای جستجو از روش تجزیه درختی استفاده می کنه و برای بهینه سازی از روش حرص Alpha - Beta استفاده میکنه . عمق پیمایش 5 ه و متوسط Node های ساخته شده بدون حرص برای Position های نیمه پیچیده وسط بازی حدود 40^40^40^40^40 ه . حداکثر زمان پاسخ برای یک Position پیچیده وسط بازی با اعمال حرص ، حدود 5 ثانیه است . ( Processor: Core 2 Duo E4500 )
نه موتور و نه واسط اون تجاری ه؛ ولی چون فعلا به امنیت فایل های exe و dll در حفاظت از کد ها ایمان ندارم متاسفانه ...
اگه screenshot به دردتوم می خوره می تونم چند تا براتون upload کنم یا چند تا از بازی های موتور رو براتون بنویسم .
.