بازی دوز - پروژه پایتون با Tkinter
❌ بازی دوز (Tic Tac Toe) - پروژه کلاسیک پایتون
📊 ویژگیهای کلیدی پروژه:
• 🎮 دو حالت بازی: دو نفره و با کامپیوتر
• 🤖 هوش مصنوعی ساده برای حالت تک نفره
• 📊 سیستم امتیازدهی برای X، O و مساوی
• ✨ هایلایت کردن خط برنده با رنگ طلایی
• 🎨 طراحی زیبا با رنگهای جذاب
• 🖱️ کنترل کامل با موس
• 🔄 دکمه بازی جدید برای شروع مجدد
• 📝 نمایش نوبت بازیکن
• 🏆 ذخیره امتیازات در طول بازی
• 📊 ریست امتیازات با تایید
• 🌈 افکت hover روی دکمهها
• 📐 صفحه ۳x۳ با خطوط طلایی
🔧 مشخصات فنی پروژه:
• زبان برنامهنویسی: Python 3.8+
• کتابخانههای استفاده شده: tkinter, messagebox, random
• حجم فایل: ۴۸ کیلوبایت
• تعداد خطوط کد: ۶۵۰+ خط کد تمیز و کامنتگذاری شده
• ساختار: برنامهنویسی شیگرا (OOP) با کلاس TicTacToe
• معماری ماژولار با توابع مجزا
• مدیریت خطاهای پیشرفته
🎨 پالت رنگی:
• پسزمینه اصلی: #2C3E50 (آبی تیره)
• صفحه بازی: #34495E (آبی روشنتر)
• خطوط صفحه: #F1C40F (طلایی)
• X (بازیکن اول): #E74C3C (قرمز)
• O (بازیکن دوم): #3498DB (آبی)
• دکمه شروع: #27AE60 (سبز)
• دکمه تغییر حالت: #E67E22 (نارنجی)
• دکمه ریست امتیازات: #95A5A6 (خاکستری)
• کارت امتیاز X: قرمز
• کارت امتیاز O: آبی
• کارت مساوی: #7F8C8D (خاکستری تیره)
🎮 حالتهای بازی:
👥 دو نفره (Player vs Player):
• دو بازیکن به نوبت بازی میکنند
• X همیشه شروعکننده است
• هر بازیکن روی خانههای خالی کلیک میکند
🤖 با کامپیوتر (Player vs Computer):
• بازیکن با X بازی میکند (شروعکننده)
• کامپیوتر با O بازی میکند
• کامپیوتر با ۰.۵ ثانیه تأخیر حرکت میکند
• استراتژی ساده: اول مرکز، بعد گوشهها، بعد بقیه
📊 سیستم امتیازدهی:
• ❌ X: امتیاز بازیکن X (قرمز)
• 🤝 مساوی: تعداد بازیهای مساوی (خاکستری)
• ⭕ O: امتیاز بازیکن O (آبی)
💻 نحوه اجرا:
# روش اول: اجرای مستقیم
python tic_tac_toe.py
# روش دوم: اجرا در محیط مجازی (توصیه شده)
python -m venv venv
source venv/bin/activate # در لینوکس/مک
venv\Scripts\activate # در ویندوز
python tic_tac_toe.py
📁 ساختار پروژه:
tic-tac-toe-game/
├── tic_tac_toe.py # فایل اصلی پروژه
├── README.md
🎨 طراحی بصری:
🖼️ صفحه اصلی:
• عنوان "❌ TIC TAC TOE ⭕" طلایی
• ۳ کارت امتیاز (X، مساوی، O)
• صفحه بازی ۳x۳ با خطوط طلایی
• نمایش نوبت با رنگ متناسب
• ۳ دکمه با hover effect
📊 کارتهای امتیاز:
• هر کارت دارای رنگ مخصوص
• نمایش عنوان و امتیاز با فونت درشت
• چیدمان افقی در بالای صفحه
🎮 صفحه بازی:
• خانههای ۱۰۰x۱۰۰ پیکسل
• خطوط طلایی ضخیم (۳ پیکسل)
• X قرمز با ضخامت ۴
• O آبی با ضخامت ۴
✨ هایلایت برنده:
• خانههای برنده با حاشیه ضخیم
• رنگ حاشیه مطابق برنده (قرمز/آبی)
• ضخامت ۳ پیکسل
⌨️ کنترلهای بازی:
🖱️ کلیک روی خانه: ثبت حرکت
🖱️ کلیک روی دکمهها: اجرای عملیات
🚀 نحوه بازی:
۱. اجرای برنامه
۲. پنجره انتخاب حالت نمایش داده میشود
۳. یکی از حالتها را انتخاب کنید:
• "👥 دو نفره (Player vs Player)"
• "🤖 با کامپیوتر (Player vs Computer)"
۴. بازی با نوبت X شروع میشود
۵. روی خانههای خالی کلیک کنید
۶. X و O به نوبت خانهها را پر میکنند
۷. در حالت با کامپیوتر:
• شما با X بازی میکنید
• کامپیوتر با ۰.۵ ثانیه تأخیر حرکت میکند
۸. پس از هر حرکت، بررسی برنده انجام میشود
۹. اگر برنده مشخص شود:
• خط برنده هایلایت میشود
• امتیاز برنده افزایش مییابد
• پیام برنده نمایش داده میشود
۱۰. اگر همه خانهها پر شود و برنده نباشد:
• امتیاز مساوی افزایش مییابد
• پیام مساوی نمایش داده میشود
۱۱. با دکمه "🔄 بازی جدید" دوباره بازی کنید
۱۲. با دکمه "🎮 تغییر حالت" حالت بازی را عوض کنید
۱۳. با دکمه "📊 ریست امتیازات" امتیازها را صفر کنید
🤖 استراتژی کامپیوتر:
۱. اولویت اول: خانه مرکزی (شماره ۴)
۲. اولویت دوم: گوشهها (۰، ۲، ۶، ۸)
۳. اولویت سوم: بقیه خانهها (تصادفی)
🏆 تشخیص برنده:
• ۸ الگوی برنده:
- ۳ خط افقی
- ۳ خط عمودی
- ۲ خط قطری
• ذخیره الگوی برنده برای هایلایت
• نمایش خط برنده با رنگ متناسب
⭐ نقاط قوت پروژه:
• کد کاملاً تمیز و کامنتگذاری شده
• رعایت اصول برنامهنویسی شیگرا (OOP)
• دو حالت مختلف بازی
• هوش مصنوعی ساده
• سیستم امتیازدهی کامل
• هایلایت خط برنده
• افکت hover روی دکمهها
• پنجره انتخاب حالت جداگانه
• بدون وابستگی به کتابخانههای خارجی
• قابل اجرا روی ویندوز، لینوکس و مک
• حجم کم و عملکرد عالی
• طراحی زیبا و کاربرپسند
🎯 موارد استفاده:
• سرگرمی دو نفره
• تمرین با کامپیوتر
• یادگیری برنامهنویسی بازی
• پروژه دانشجویی
• آموزش مفاهیم ماتریس
• تمرین کار با گرید و event handling
📌 نکات فنی:
• استفاده از Canvas برای رسم
• ذخیره وضعیت خانهها در لیست
• تشخیص برنده با ۸ ترکیب
• هایلایت با rectangle روی خانهها
• تأخیر ۵۰۰ms برای حرکت کامپیوتر
• hover effect با bind events
با افتخار از درخت کد
محمدمهدی محمودی
treec.net | mohammadmahdimahmoudi.ir