شطرنج حرفهای - پروژه پایتون با Tkinter
♔ بازی شطرنج حرفهای - پروژه استراتژیک پایتون
📊 ویژگیهای کلیدی پروژه:
• ♔ ۶ مهره مختلف: شاه، وزیر، رخ، فیل، اسب، پیاده
• ♟️ قوانین کامل شطرنج برای همه مهرهها
• 🎯 تشخیص حرکتهای قانونی برای هر مهره
• 👑 تشخیص حالت کیش (Check)
• 💀 تشخیص مات (Checkmate)
• 📝 تاریخچه حرکات با قابلیت بازگشت
• 🔄 قابلیت بازگشت حرکت (Undo)
• 🏆 نمایش مهرههای گرفته شده
• 🎨 صفحه شطرنج ۸x۸ با رنگهای استاندارد
• 🔍 هایلایت کردن حرکتهای ممکن
• 🖱️ انتخاب مهره با کلیک
• 🤵 نمایش نوبت بازیکن (سفید/سیاه)
• 🔄 تبدیل پیاده به وزیر در انتهای صفحه
• 🆕 شروع بازی جدید
🔧 مشخصات فنی پروژه:
• زبان برنامهنویسی: Python 3.8+
• کتابخانههای استفاده شده: tkinter, copy
• حجم فایل: ۴۵ کیلوبایت
• تعداد خطوط کد: ۶۵۰+ خط کد تمیز و کامنتگذاری شده
• ساختار: برنامهنویسی شیگرا (OOP) با ۷ کلاس
• معماری ماژولار با کلاسهای مجزا برای هر مهره
• مدیریت خطاهای پیشرفته
👑 مهرههای شطرنج:
♔ شاه (King):
• حرکت: یک خانه در هر جهت (۸ جهت)
• محدودیت: نمیتواند به خانهای برود که در معرض حمله باشد
• نماد: ♔ (سفید) / ♚ (سیاه)
♕ وزیر (Queen):
• حرکت: هر تعداد خانه در ۸ جهت
• ترکیبی از حرکت رخ و فیل
• نماد: ♕ (سفید) / ♛ (سیاه)
♖ رخ (Rook):
• حرکت: هر تعداد خانه در ۴ جهت (افقی و عمودی)
• نماد: ♖ (سفید) / ♜ (سیاه)
♗ فیل (Bishop):
• حرکت: هر تعداد خانه در ۴ جهت (قطری)
• نماد: ♗ (سفید) / ♝ (سیاه)
♘ اسب (Knight):
• حرکت: L شکل (۲ خانه در یک جهت، ۱ خانه در جهت عمود)
• میتواند از روی مهرهها بپرد
• نماد: ♘ (سفید) / ♞ (سیاه)
♙ پیاده (Pawn):
• حرکت: یک خانه به جلو
• حرکت اول: میتواند دو خانه برود
• گرفتن: یک خانه به صورت قطری
• تبدیل: در انتهای صفحه به وزیر تبدیل میشود
• نماد: ♙ (سفید) / ♟ (سیاه)
💻 نحوه اجرا:
# روش اول: اجرای مستقیم
python chess_game.py
# روش دوم: اجرا در محیط مجازی (توصیه شده)
python -m venv venv
source venv/bin/activate # در لینوکس/مک
venv\Scripts\activate # در ویندوز
python chess_game.py
📁 ساختار پروژه:
chess-game/
├── chess_game.py # فایل اصلی پروژه
├── README.md
🎨 طراحی بصری:
♟️ صفحه شطرنج:
• گرید ۸x۸ با دکمههای ۴x۴
• رنگهای استاندارد: روشن (#f0d9b5) و تیره (#b58863)
• حاشیههای برجسته با bd=3 و relief=RIDGE
• مهرهها با فونت ۲۰ و یونیکد
📊 پنل اطلاعات (پایین):
• نوبت بازیکن (🟡 سفید / ⚫ سیاه)
• وضعیت شاه (عادی/کیش/مات)
• مهرههای گرفته شده
• دکمههای بازی جدید و بازگشت حرکت
🔍 هایلایتها:
• خانه انتخاب شده: رنگ فیروزهای (#4ecdc4)
• حرکتهای ممکن: رنگ نارنجی (#ff9f43)
• حالت کیش: رنگ قرمز (#ff6b6b)
🎨 پالت رنگی:
• پسزمینه اصلی: #2d2d3a (خاکستری تیره)
• فریم اطلاعات: #3a3a45 (خاکستری)
• خانه روشن: #f0d9b5 (بژ)
• خانه تیره: #b58863 (قهوهای)
• خانه انتخاب شده: #4ecdc4 (فیروزهای)
• حرکت ممکن: #ff9f43 (نارنجی)
• حالت کیش: #ff6b6b (قرمز)
• مهره سفید: سفید
• مهره سیاه: سیاه
🔧 معماری برنامه:
🏗️ کلاس Piece (والد):
• ویژگیهای: color, row, col, symbol, has_moved
• متد: get_valid_moves (برای هر مهره override میشود)
👑 کلاسهای فرزند (۶ کلاس):
• Pawn: منطق حرکت پیاده
• Rook: منطق حرکت رخ
• Knight: منطق حرکت اسب
• Bishop: منطق حرکت فیل
• Queen: منطق حرکت وزیر
• King: منطق حرکت شاه
🎮 کلاس ChessGame:
• مدیریت صفحه و مهرهها
• منطق کلیک و انتخاب
• تشخیص حرکتهای قانونی
• تشخیص کیش و مات
• تاریخچه حرکات
🚀 نحوه بازی:
۱. اجرای برنامه
۲. صفحه شطرنج با چیدمان استاندارد نمایش داده میشود
۳. نوبت با سفید است
۴. روی مهره خودی کلیک کنید:
• خانه انتخاب شده فیروزهای میشود
• حرکتهای ممکن نارنجی میشوند
۵. روی یکی از خانههای نارنجی کلیک کنید تا مهره حرکت کند
۶. اگر مهره حریف در خانه مقصد باشد، گرفته میشود
۷. بازی ادامه مییابد تا:
• یکی از شاهها مات شود
• بازیکن تسلیم شود
۸. میتوانید با دکمه "بازگشت حرکت" به عقب برگردید
۹. با دکمه "بازی جدید" میتوانید از نو شروع کنید
📋 قوانین پیادهسازی شده:
♙ پیاده:
• حرکت به جلو (یک خانه)
• حرکت دو خانه در اولین حرکت
• گرفتن به صورت قطری
• تبدیل به وزیر در انتهای صفحه
♖ رخ:
• حرکت افقی و عمودی
• نمیتواند از روی مهرهها بپرد
♘ اسب:
• حرکت L شکل
• میتواند از روی مهرهها بپرد
♗ فیل:
• حرکت قطری
• نمیتواند از روی مهرهها بپرد
♕ وزیر:
• ترکیب حرکت رخ و فیل
• نمیتواند از روی مهرهها بپرد
♔ شاه:
• حرکت یک خانه در ۸ جهت
• نمیتواند به خانهای برود که در معرض حمله باشد
👑 تشخیص کیش و مات:
🔍 کیش (Check):
• اگر شاه در معرض حمله باشد
• نمایش پیام "کیش" با رنگ قرمز
• بازیکن باید شاه را از خطر نجات دهد
💀 مات (Checkmate):
• اگر شاه در کیش باشد و هیچ حرکتی برای نجات نداشته باشد
• نمایش پیام "مات" و اعلام برنده
• پایان بازی
🔄 قابلیتهای اضافی:
📝 تاریخچه حرکات:
• ذخیره هر حرکت در لیست move_history
• امکان بازگشت به حرکت قبلی با Undo
• بازیابی وضعیت صفحه
🏆 مهرههای گرفته شده:
• نمایش در پنل اطلاعات
• جداگانه برای سفید و سیاه
🔄 شروع مجدد:
• ریست کامل صفحه
• پاک کردن تاریخچه
• شروع با نوبت سفید
⭐ نقاط قوت پروژه:
• کد کاملاً تمیز و کامنتگذاری شده
• معماری شیگرا با ۷ کلاس
• پیادهسازی کامل قوانین شطرنج
• تشخیص حرکتهای قانونی برای همه مهرهها
• تشخیص کیش و مات
• رابط کاربری زیبا و کاربرپسند
• قابلیت بازگشت حرکت
• نمایش مهرههای گرفته شده
• بدون وابستگی به کتابخانههای خارجی
• قابل اجرا روی ویندوز، لینوکس و مک
• حجم کم و عملکرد سریع
• طراحی استاندارد صفحه شطرنج
🎯 موارد استفاده:
• بازی شطرنج با دو نفر
• یادگیری قوانین شطرنج
• تمرین برنامهنویسی شیگرا
• پروژه دانشجویی
• آموزش مفاهیم ماتریس و الگوریتم
📌 نکات فنی:
• استفاده از copy.deepcopy برای ذخیره وضعیت صفحه
• بازگشت لیست حرکتهای ممکن برای هر مهره
• بررسی محدودیتهای صفحه در همه حرکات
• تشخیص برخورد با مهرهها
• مدیریت تبدیل پیاده
با افتخار از درخت کد
محمدمهدی محمودی
treec.net | mohammadmahdimahmoudi.ir