بازی چهارتایی - پروژه پایتون با Tkinter
🔴 بازی چهارتایی (Connect Four) - پروژه استراتژیک پایتون
📊 ویژگیهای کلیدی پروژه:
• 🎮 صفحه بازی ۶ ردیف و ۷ ستون
• 🔴 مهرههای قرمز برای بازیکن ۱
• 🟡 مهرههای زرد برای بازیکن ۲
• 👥 دو حالت بازی: دو نفره و با کامپیوتر
• 🤖 هوش مصنوعی ساده برای حالت تک نفره
• 🏆 تشخیص برنده در ۴ جهت (افقی، عمودی، قطری)
• ✨ هایلایت کردن خط برنده با رنگ طلایی
• 📊 سیستم امتیازدهی برای هر بازیکن و مساوی
• 🖱️ هایلایت ستون انتخاب شده با حرکت موس
• ⚠️ نمایش هشدار برای ستونهای پر
• 🔄 دکمه بازی جدید برای شروع مجدد
• 📝 نمایش نوبت با نشانگر رنگی
• 🌈 افکت hover روی دکمهها
• 🎨 طراحی زیبا با رنگهای جذاب
🔧 مشخصات فنی پروژه:
• زبان برنامهنویسی: Python 3.8+
• کتابخانههای استفاده شده: tkinter, messagebox, random
• حجم فایل: ۵۸ کیلوبایت
• تعداد خطوط کد: ۸۰۰+ خط کد تمیز و کامنتگذاری شده
• ساختار: برنامهنویسی شیگرا (OOP) با کلاس ConnectFour
• معماری ماژولار با توابع مجزا
• مدیریت خطاهای پیشرفته
🎨 پالت رنگی:
• پسزمینه اصلی: #2C3E50 (آبی تیره)
• تخته بازی: #34495E (آبی روشنتر)
• بازیکن ۱ (قرمز): #E74C3C
• بازیکن ۲ (زرد): #F1C40F
• خانه خالی: #ECF0F1 (سفید)
• حاشیه سوراخها: #7F8C8D (خاکستری)
• خط برنده: #F1C40F (طلایی)
• دکمه شروع: #27AE60 (سبز)
• دکمه تغییر حالت: #E67E22 (نارنجی)
• دکمه ریست امتیازات: #95A5A6 (خاکستری)
📐 مشخصات صفحه:
• ابعاد: ۶ ردیف × ۷ ستون
• اندازه هر خانه: ۷۰ × ۷۰ پیکسل
• شعاع مهرهها: ۳۰ پیکسل
• تخته: ۴۹۰ × ۴۲۰ پیکسل
💻 نحوه اجرا:
# روش اول: اجرای مستقیم
python connect_four.py
# روش دوم: اجرا در محیط مجازی (توصیه شده)
python -m venv venv
source venv/bin/activate # در لینوکس/مک
venv\Scripts\activate # در ویندوز
python connect_four.py
📁 ساختار پروژه:
connect-four-game/
├── connect_four.py # فایل اصلی پروژه
├── README.md
🎨 طراحی بصری:
🖼️ صفحه اصلی:
• عنوان "🔴 CONNECT FOUR 🟡" طلایی
• ۳ کارت امتیاز (قرمز، مساوی، زرد)
• تخته بازی با سوراخهای سفید
• نشانگر نوبت (دایره رنگی)
• نمایش نوبت با متن رنگی
• ۳ دکمه با hover effect
📊 کارتهای امتیاز:
• هر کارت با رنگ مخصوص
• عنوان و امتیاز با فونت درشت
• چیدمان افقی در بالای صفحه
🎮 تخته بازی:
• سوراخهای دایرهای سفید با حاشیه خاکستری
• مهرههای قرمز و زرد با حاشیه سفید
• هایلایت ستون انتخاب شده با مهره شناور
• خط برنده با حاشیه طلایی ضخیم
✨ افکتها:
• حرکت موس: هایلایت ستون
• hover روی دکمه: تغییر رنگ
• ستون پر: پنجره هشدار
⌨️ کنترلهای بازی:
🖱️ حرکت موس روی ستون: نمایش مهره شناور
🖱️ کلیک روی ستون: انداختن مهره
🚀 نحوه بازی:
۱. اجرای برنامه
۲. پنجره انتخاب حالت نمایش داده میشود
۳. یکی از حالتها را انتخاب کنید:
• "👥 دو نفره (Player vs Player)"
• "🤖 با کامپیوتر (Player vs Computer)"
۴. بازی با نوبت قرمز شروع میشود
۵. موس را روی ستونها حرکت دهید:
• مهره شناور در بالای ستون نمایش داده میشود
۶. روی ستون مورد نظر کلیک کنید:
• مهره به پایینترین خانه خالی میافتد
۷. در حالت با کامپیوتر:
• شما با قرمز بازی میکنید
• کامپیوتر با ۰.۵ ثانیه تأخیر حرکت میکند
۸. اگر ستون پر باشد:
• پنجره هشدار نمایش داده میشود
• باید ستون دیگری انتخاب کنید
۹. پس از هر حرکت، بررسی برنده انجام میشود:
• ۴ جهت: افقی، عمودی، قطری اصلی و فرعی
۱۰. اگر برنده مشخص شود:
• خط برنده با حاشیه طلایی هایلایت میشود
• امتیاز برنده افزایش مییابد
• پیام برنده نمایش داده میشود
۱۱. اگر تخته پر شود و برنده نباشد:
• امتیاز مساوی افزایش مییابد
• پیام مساوی نمایش داده میشود
۱۲. با دکمه "🔄 بازی جدید" دوباره بازی کنید
۱۳. با دکمه "🎮 تغییر حالت" حالت بازی را عوض کنید
۱۴. با دکمه "📊 ریست امتیازات" امتیازها را صفر کنید
🤖 استراتژی کامپیوتر:
• انتخاب تصادفی از ستونهای موجود
• بدون استراتژی پیشرفته (مناسب برای مبتدیان)
🏆 تشخیص برنده (۴ جهت):
➡️ افقی: بررسی هر ردیف
⬇️ عمودی: بررسی هر ستون
↘️ قطری اصلی (\): از چپ به راست و بالا به پایین
↙️ قطری فرعی (/): از راست به چپ و بالا به پایین
⭐ نقاط قوت پروژه:
• کد کاملاً تمیز و کامنتگذاری شده
• رعایت اصول برنامهنویسی شیگرا (OOP)
• دو حالت مختلف بازی
• تشخیص برنده در ۴ جهت
• هایلایت خط برنده
• سیستم هایلایت ستون با حرکت موس
• پنجره هشدار برای ستون پر
• سیستم امتیازدهی کامل
• افکت hover روی دکمهها
• بدون وابستگی به کتابخانههای خارجی
• قابل اجرا روی ویندوز، لینوکس و مک
• حجم کم و عملکرد عالی
• طراحی زیبا و کاربرپسند
🎯 موارد استفاده:
• سرگرمی دو نفره
• تمرین با کامپیوتر
• یادگیری برنامهنویسی بازی
• پروژه دانشجویی
• آموزش مفاهیم ماتریس دوبعدی
• تمرین کار با گرید و event handling
📌 نکات فنی:
• استفاده از Canvas برای رسم
• ذخیره وضعیت تخته در ماتریس ۶x۷
• تشخیص برنده با حلقههای تو در تو
• هایلایت با ذخیره winning_cells
• حرکت موس با bind <Motion>
• تأخیر ۵۰۰ms برای حرکت کامپیوتر
• پنجره هشدار موقت با auto-destroy
با افتخار از درخت کد
محمدمهدی محمودی
treec.net | mohammadmahdimahmoudi.ir