بازی ماز - پروژه پایتون با Tkinter
🧩 بازی ماز (مارپیچ) - پروژه معمایی پایتون
📊 ویژگیهای کلیدی پروژه:
• 🧱 نقشه ۲۱x۲۱ با دیوارهای آبی تیره
• 🟢 نقطه شروع سبز
• 🟥 خروجی قرمز
• 👤 بازیکن به صورت دایره فیروزهای
• 📊 ۳ سطح دشواری: آسان، متوسط، سخت
• ⏱️ تایمر برای ثبت زمان
• 👣 شمارش تعداد حرکتها
• ⚡ ۳ سطح سرعت حرکت: آهسته، متوسط، تند
• ⏸️ قابلیت توقف/ادامه با Space
• 🔄 دکمه ریست برای شروع مجدد
• 🎮 صفحه شروع با راهنما
• 🏁 صفحه برد با انیمیشن
• 🎨 گرافیک جذاب و مدرن
• ⌨️ کنترل با کلیدهای جهتدار
🔧 مشخصات فنی پروژه:
• زبان برنامهنویسی: Python 3.8+
• کتابخانههای استفاده شده: tkinter, time
• حجم فایل: ۴۲ کیلوبایت
• تعداد خطوط کد: ۵۵۰+ خط کد تمیز و کامنتگذاری شده
• ساختار: برنامهنویسی شیگرا (OOP) با کلاس MazeGame
• معماری ماژولار با توابع مجزا
• مدیریت خطاهای پیشرفته
🎮 قوانین بازی:
🧱 نقشه:
• ابعاد: ۲۱x۲۱ سلول
• اندازه سلول: ۳۰ پیکسل
• دیوارها: سلول با مقدار ۱
• مسیرها: سلول با مقدار ۰
🟢 نقطه شروع:
• موقعیت: [1, 1] (بالا چپ)
• رنگ سبز (#00ff00)
🟥 خروجی:
• موقعیت: [19, 19] (پایین راست)
• رنگ قرمز (#ff4444)
👤 بازیکن:
• حرکت در ۴ جهت
• نمیتواند از دیوارها عبور کند
• رنگ فیروزهای (#00ffff)
📊 سطوح دشواری:
🔰 آسان:
• مسیرهای بازتر
• پیچیدگی کمتر
• مناسب برای مبتدیان
⚙️ متوسط:
• مسیرهای پیچیدهتر
• دیوارهای بیشتر
• چالش متوسط
💪 سخت:
• مسیرهای مارپیچی
• دیوارهای متراکم
• چالش بالا
⚡ سطوح سرعت:
🐢 آهسته:
• تاخیر ۲۰۰ میلیثانیه بین حرکات
• مناسب برای یادگیری
⚡ متوسط:
• تاخیر ۱۵۰ میلیثانیه
• تعادل بین سرعت و کنترل
🚀 تند:
• تاخیر ۱۰۰ میلیثانیه
• برای بازیکنان حرفهای
💻 نحوه اجرا:
# روش اول: اجرای مستقیم
python maze_game.py
# روش دوم: اجرا در محیط مجازی (توصیه شده)
python -m venv venv
source venv/bin/activate # در لینوکس/مک
venv\Scripts\activate # در ویندوز
python maze_game.py
📁 ساختار پروژه:
maze-game/
├── maze_game.py # فایل اصلی پروژه
├── README.md
🎨 طراحی بصری:
📊 نوار بالا:
• سطح: انتخاب سطح (آسان، متوسط، سخت)
• تایمر: ⏱️ با رنگ سبز
• حرکتها: 👣 با رنگ زرد
• سرعت: انتخاب سرعت (آهسته، متوسط، تند)
🧱 صفحه بازی:
• دیوارها: آبی تیره (#2c3e50) با حاشیه تیرهتر
• مسیرها: مشکی (#000000) با حاشیه خاکستری
• نقطه شروع: دایره سبز ۵px
• خروجی: مربع قرمز ۸x۸
• بازیکن: دایره فیروزهای ۱۰px با حاشیه سفید
📊 نوار پایین:
• دکمه شروع بازی (سبز)
• دکمه توقف/ادامه (نارنجی)
• دکمه ریست (آبی)
• راهنما (خاکستری)
⌨️ کنترلهای بازی:
⬆️ پیکان بالا: حرکت به بالا
⬇️ پیکان پایین: حرکت به پایین
⬅️ پیکان چپ: حرکت به چپ
➡️ پیکان راست: حرکت به راست
␣ Space: توقف/ادامه بازی
🚀 نحوه بازی:
۱. اجرای برنامه
۲. سطح مورد نظر را انتخاب کنید (آسان، متوسط، سخت)
۳. سرعت حرکت را انتخاب کنید (آهسته، متوسط، تند)
۴. دکمه "شروع بازی" را بزنید
۵. با کلیدهای جهتدار بازیکن را حرکت دهید
۶. از میان مسیرها به سمت خروجی بروید
۷. تعداد حرکتها و زمان ثبت میشود
۸. میتوانید با Space بازی را متوقف کنید
۹. با رسیدن به خروجی قرمز، برنده میشوید
۱۰. برای بازی جدید، دکمه "ریست" را بزنید
🔄 منطق بازی:
👤 حرکت بازیکن:
• بررسی امکان حرکت با can_move
• ممنوعیت عبور از دیوار (۱)
• بهروزرسانی موقعیت
• افزایش شمارنده حرکت
⏱️ تایمر:
• ثبت زمان شروع
• بهروزرسانی هر ۱۰۰ms
• توقف در حالت Pause
🏁 تشخیص برد:
• مقایسه موقعیت بازیکن با خروجی
• نمایش پیام "🎉 YOU WIN! 🎉"
• غیرفعال شدن کنترلها
⏸️ حالت توقف:
• عدم پذیرش حرکت
• نمایش پیام "PAUSED"
• توقف تایمر
🎯 پیامهای بازی:
✅ شروع بازی:
• صفحه ماز نمایش داده میشود
• تایمر شروع به کار میکند
⏸️ حالت توقف:
• نمایش "⏸️ PAUSED" وسط صفحه
• توقف تایمر و حرکت
🏁 برد:
• نمایش "🎉 YOU WIN! 🎉" با رنگ سبز
• نمایش زمان و حرکتها
• غیرفعال شدن حرکت
⭐ نقاط قوت پروژه:
• کد کاملاً تمیز و کامنتگذاری شده
• رعایت اصول برنامهنویسی شیگرا (OOP)
• ۳ سطح دشواری مختلف
• ۳ سطح سرعت قابل تنظیم
• تایمر دقیق
• شمارش حرکتها
• کنترل روان با صفحه کلید
• قابلیت توقف/ادامه بازی
• طراحی زیبا و مدرن
• بدون وابستگی به کتابخانههای خارجی
• قابل اجرا روی ویندوز، لینوکس و مک
• حجم کم و عملکرد سریع
🎯 موارد استفاده:
• سرگرمی و تمرین حل مسئله
• یادگیری برنامهنویسی بازی
• پروژه دانشجویی
• آموزش مفاهیم ماتریس و آرایه دوبعدی
• تمرین کار با گرید و مختصات
• آشنایی با الگوریتمهای مسیریابی
📌 نکات فنی:
• نقشه به صورت ماتریس ۲۱x۲۱
• اعداد: ۰=مسیر، ۱=دیوار
• تشخیص حرکت با بررسی مختصات
• تایمر با time.time() و after
• تغییر سطح با OptionMenu
• تغییر سرعت با متغیر move_speeds
با افتخار از درخت کد
محمدمهدی محمودی
treec.net | mohammadmahdimahmoudi.ir