سودوکو - پروژه پایتون با Tkinter
🧩 سودوکو واقعی - پروژه بازی فکری پایتون
📊 ویژگیهای کلیدی پروژه:
• 🎮 ۴ سطح دشواری: آسان، متوسط، سخت، حرفهای
• ⏱️ تایمر برای ثبت زمان حل بازی
• ❌ محدودیت ۳ اشتباه (Game Over)
• 💡 سیستم راهنمایی با هایلایت
• 📝 حالت یادداشتبرداری (Notes Mode)
• ⌨️ پشتیبانی کامل از صفحه کلید
• 🎨 طراحی گرید ۹x۹ با مرزهای بلوکی
• 🔢 دکمههای اعداد ۱ تا ۹
• 🔄 تولید پازل تصادفی
• ✅ بررسی خودکار راه حل
• 📊 نمایش آمار بازی (زمان، اشتباهات، راهنماییها)
• 🔁 امکان شروع بازی جدید
• 🌙 تم تیره حرفهای
🔧 مشخصات فنی پروژه:
• زبان برنامهنویسی: Python 3.8+
• کتابخانههای استفاده شده: tkinter, random, copy
• حجم فایل: ۳۸ کیلوبایت
• تعداد خطوط کد: ۵۵۰+ خط کد تمیز و کامنتگذاری شده
• ساختار: برنامهنویسی شیگرا (OOP) با کلاس RealSudokuGame
• معماری ماژولار با توابع مجزا
• مدیریت خطاهای پیشرفته
🎯 قوانین بازی سودوکو:
📏 قوانین اصلی:
• جدول ۹x۹ خانه دارد
• هر سطر باید شامل اعداد ۱ تا ۹ باشد (بدون تکرار)
• هر ستون باید شامل اعداد ۱ تا ۹ باشد (بدون تکرار)
• هر بلوک ۳x۳ باید شامل اعداد ۱ تا ۹ باشد (بدون تکرار)
• خانههای ثابت (سبز رنگ) قابل تغییر نیستند
• خانههای متغیر (سفید رنگ) را میتوان پر کرد
📊 سطوح دشواری:
• آسان (Easy): ۳۰ خانه خالی
• متوسط (Medium): ۴۰ خانه خالی
• سخت (Hard): ۵۰ خانه خالی
• حرفهای (Expert): ۶۰ خانه خالی
💻 نحوه اجرا:
# روش اول: اجرای مستقیم
python sudoku_game.py
# روش دوم: اجرا در محیط مجازی (توصیه شده)
python -m venv venv
source venv/bin/activate # در لینوکس/مک
venv\Scripts\activate # در ویندوز
python sudoku_game.py
📁 ساختار پروژه:
real-sudoku-game/
├── sudoku_game.py # فایل اصلی پروژه
├── README.md
🎨 طراحی بصری:
🔷 هدر:
• آیکون 🧩 در دو طرف
• عنوان SUDOKU با رنگ سبز نئون
📊 پنل اطلاعات:
• 📊 سطح دشواری با ComboBox
• ⏱️ تایمر با نمایش دقیقه:ثانیه
• ❌ تعداد اشتباهات (۰/۳)
• 💡 تعداد راهنماییهای استفاده شده
🎮 صفحه سودوکو:
• گرید ۹x۹ با مرزهای ضخیم برای بلوکهای ۳x۳
• خانههای ثابت: متن سبز (#00ff88)
• خانههای متغیر: متن سفید (#ffffff)
• خانه انتخاب شده: پسزمینه روشنتر (#4a4a55)
• مرزهای بلوک: فاصله ۳ پیکسلی
🔢 پنل اعداد:
• دکمههای ۱ تا ۹ با افکت hover
• دکمه پاک کردن ⌫ با رنگ قرمز
🎮 پنل کنترل:
• 🔄 جدید (آبی)
• 💡 راهنمایی (نارنجی)
• ✅ بررسی (آبی)
• 📝 یادداشت (خاکستری)
• 🧹 پاک همه (خاکستری)
📋 نوار وضعیت:
• پیامهای راهنما
• نمایش حالت فعلی (عادی/یادداشت)
🎨 پالت رنگی:
• پسزمینه اصلی: #0a0a0f (مشکی)
• کارتها: #1a1a24 (مشکی روشن)
• گرید: #2a2a35 (خاکستری تیره)
• مرزها: #4a4a55 (خاکستری)
• اکنت سبز: #00ff88 (اعداد ثابت)
• اکنت نارنجی: #ff9f43 (راهنمایی)
• اکنت قرمز: #ff6b6b (اشتباه)
• متن اصلی: #ffffff (سفید)
• متن ثانویه: #a0a0b0 (خاکستری)
🔧 ویژگیهای فنی پیشرفته:
🎲 تولید پازل:
• استفاده از ماتریس پایه ۹x۹
• جابجایی تصادفی سطرها و ستونها در بلوکها
• حذف اعداد بر اساس سطح دشواری
• تضمین وجود یک راه حل منحصر به فرد
📝 سیستم یادداشت:
• ذخیره یادداشتها در دیکشنری notes
• نمایش یادداشتها با فرمت ۳x۳
• قابلیت اضافه/حذف یادداشت با کلیک
⌨️ کنترل با صفحه کلید:
• اعداد ۱-۹: وارد کردن عدد
• کلید ۰ یا BackSpace: پاک کردن خانه
• کلید N: تغییر حالت یادداشت
💡 سیستم راهنمایی:
• انتخاب خودکار یک خانه خالی
• نمایش عدد صحیح با هایلایت
• شمارش تعداد راهنماییها
❌ محدودیت اشتباه:
• حداکثر ۳ اشتباه مجاز
• هایلایت قرمز برای اشتباه
• اتمام بازی پس از ۳ اشتباه
🚀 نحوه بازی:
۱. اجرای برنامه
۲. سطح دشواری را انتخاب کنید (آسان، متوسط، سخت، حرفهای)
۳. روی دکمه "🔄 جدید" کلیک کنید
۴. یک خانه خالی را انتخاب کنید
۵. عدد مناسب را وارد کنید:
• با کلیک روی دکمههای اعداد
• یا با فشردن کلیدهای ۱-۹
۶. اگر مطمئن نیستید، از حالت یادداشت استفاده کنید:
• دکمه "📝 یادداشت" را بزنید
• روی اعداد کلیک کنید تا یادداشت اضافه شود
۷. اگر گیر کردید، از راهنمایی استفاده کنید:
• یک خانه را انتخاب کنید
• دکمه "💡 راهنمایی" را بزنید
۸. برای بررسی راه حل، دکمه "✅ بررسی" را بزنید
۹. پس از تکمیل جدول، نتیجه اعلام میشود
⌨️ میانبرهای صفحه کلید:
• ۱-۹: وارد کردن عدد در خانه انتخاب شده
• ۰ یا BackSpace: پاک کردن خانه
• N: تغییر حالت عادی/یادداشت
📋 پیامهای بازی:
🎉 برد:
• نمایش زمان، تعداد اشتباهات و راهنماییها
• پیام تبریک و پیشنهاد بازی جدید
😢 باخت:
• پس از ۳ اشتباه
• نمایش پیام و پیشنهاد بازی مجدد
✅ بررسی:
• "❌ جدول کامل نیست" - اگر خانه خالی وجود داشته باشد
• "❌ راه حل غلط است" - اگر عددی اشتباه باشد
• "🎉 تبریک! سودوکو را حل کردی!" - اگر همه اعداد درست باشند
⭐ نقاط قوت پروژه:
• کد کاملاً تمیز و کامنتگذاری شده
• رعایت اصول برنامهنویسی شیگرا (OOP)
• ۴ سطح دشواری مختلف
• سیستم یادداشتبرداری حرفهای
• پشتیبانی از صفحه کلید
• تایمر برای ثبت زمان
• محدودیت اشتباه برای چالش بیشتر
• راهنمایی هوشمند
• بدون وابستگی به کتابخانههای خارجی
• قابل اجرا روی ویندوز، لینوکس و مک
• حجم کم و عملکرد سریع
• طراحی مدرن با تم تیره
• مناسب برای یادگیری مفاهیم بازیسازی
🎯 موارد استفاده:
• سرگرمی و تمرین ذهنی
• یادگیری برنامهنویسی بازی
• پروژه دانشجویی
• تمرین الگوریتمهای جستجو و عقبگرد
• آموزش مفاهیم ماتریس و آرایههای دوبعدی
📌 نکات فنی:
• از copy.deepcopy برای کپی ماتریسها استفاده شده
• تولید پازل با جابجایی تصادفی بلوکها
• ذخیره یادداشتها با set برای جلوگیری از تکرار
• تایمر با after و تابع بازگشتی
• بایند کردن رویدادهای صفحه کلید
با افتخار از درخت کد
محمدمهدی محمودی
treec.net | mohammadmahdimahmoudi.ir