بازی Pac-Man - پروژه پایتون با Tkinter
👾 بازی Pac-Man - پروژه کلاسیک پایتون
📊 ویژگیهای کلیدی پروژه:
• 👾 پکمن با دهان متحرک و چشم
• 👻 ۴ روح با رنگهای مختلف و هوش مصنوعی
• 🧱 نقشه ۲۱x۲۱ با دیوارهای آبی
• ⚪ نقاط کوچک (۱۰ امتیاز) - ۲۴۴ عدد
• 🔴 نقاط انرژی (۵۰ امتیاز) - ۴ عدد
• 💪 حالت ترسو برای ارواح (خورده شدن)
• ❤️ ۳ جان برای بازیکن
• 🏆 ثبت رکورد در فایل
• ⚡ ۳ سطح سرعت (آهسته، متوسط، سریع)
• ⏸️ قابلیت توقف/ادامه با Space
• 🎮 صفحه شروع با راهنما
• 🏁 صفحه پایان با نمایش امتیاز
• 🎨 گرافیک کلاسیک و جذاب
• ⌨️ کنترل با کلیدهای جهتدار
🔧 مشخصات فنی پروژه:
• زبان برنامهنویسی: Python 3.8+
• کتابخانههای استفاده شده: tkinter, random
• حجم فایل: ۴۸ کیلوبایت
• تعداد خطوط کد: ۶۵۰+ خط کد تمیز و کامنتگذاری شده
• ساختار: برنامهنویسی شیگرا (OOP) با کلاس PacMan
• معماری ماژولار با توابع مجزا
• مدیریت خطاهای پیشرفته
🎮 قوانین بازی:
👾 پکمن:
• حرکت در ۴ جهت با کلیدهای جهتدار
• خوردن نقاط برای کسب امتیاز
• دهان متحرک با انیمیشن
• چشم برای تشخیص جهت
👻 ارواح (۴ عدد):
• قرمز: #ff4444
• صورتی: #ff99cc
• فیروزهای: #66ffff
• نارنجی: #ffaa66
• هوش مصنوعی ساده برای حرکت
• فرار از پکمن در حالت ترسو
⚪ نقاط:
• نقاط کوچک: ۱۰ امتیاز
• نقاط انرژی: ۵۰ امتیاز
• فعالسازی حالت ترسو (۳۰۰ فریم)
💪 حالت ترسو:
• ارواح آبی میشوند
• پکمن میتواند آنها را بخورد
• هر روح خورده شده: +۲۰۰ امتیاز
• بازگشت روح به خانه
💻 نحوه اجرا:
# روش اول: اجرای مستقیم
python pacman.py
# روش دوم: اجرا در محیط مجازی (توصیه شده)
python -m venv venv
source venv/bin/activate # در لینوکس/مک
venv\Scripts\activate # در ویندوز
python pacman.py
📁 ساختار پروژه:
pacman-game/
├── pacman.py # فایل اصلی پروژه
├── pacman_score.txt # فایل ذخیره رکورد (ایجاد خودکار)
├── README.md
🎨 طراحی بصری:
📊 نوار بالا:
• SCORE: امتیاز فعلی (زرد)
• LIVES: تعداد جانها (قرمز)
• HIGH: رکورد (طلایی)
🧱 نقشه (۲۱x۲۱):
• دیوارها: آبی (#2121ff) با حاشیه تیره
• نقاط کوچک: دایره سفید ۲px
• نقاط انرژی: دایره بزرگ سفید با حاشیه زرد
• اندازه سلول: ۲۸ پیکسل
👾 پکمن:
• رنگ زرد (#ffff00)
• دهان متحرک (۳۰/۱۰ درجه)
• چشم سیاه در جهت حرکت
👻 ارواح:
• بدن بیضی شکل
• چشمهای سفید با مردمک سیاه
• حالت ترسو: آبی روشن (#aaaaff)
🎮 صفحه شروع:
• لوگوی PAC-MAN زرد
• راهنمای کامل
• کلیدهای کنترل
🏁 صفحه پایان:
• YOU WIN! (زرد) یا GAME OVER (قرمز)
• امتیاز نهایی
• دکمه شروع مجدد
⚡ پنل سرعت:
• SLOW (۹۰ms)
• MED (۶۰ms)
• FAST (۴۰ms)
⌨️ کنترلهای بازی:
⬆️ پیکان بالا: حرکت به بالا
⬇️ پیکان پایین: حرکت به پایین
⬅️ پیکان چپ: حرکت به چپ
➡️ پیکان راست: حرکت به راست
␣ Space: توقف/ادامه بازی
⏎ Enter: شروع بازی / بازی جدید
🚀 نحوه بازی:
۱. اجرای برنامه
۲. صفحه شروع با لوگو و راهنما نمایش داده میشود
۳. Enter بزنید تا بازی شروع شود
۴. با کلیدهای جهتدار پکمن را حرکت دهید
۵. تمام نقاط را جمع کنید
۶. از ارواح فرار کنید
۷. با خوردن نقاط انرژی، ارواح ترسو میشوند
۸. در حالت ترسو، ارواح را بخورید (+۲۰۰)
۹. اگر روح شما را بخورد، یک جان کم میشود
۱۰. با تمام شدن جانها، بازی تمام میشود
۱۱. با جمع کردن همه نقاط، برنده میشوید
۱۲. برای بازی جدید، Enter بزنید
🔄 منطق بازی:
👾 حرکت پکمن:
• بررسی امکان حرکت در جهت بعدی
• تغییر جهت در اولین فرصت
• جمعآوری نقاط
• کاهش dots_left
👻 حرکت ارواح:
• یافتن حرکتهای ممکن
• جلوگیری از بازگشت برعکس
• در حالت عادی: حرکت تصادفی
• در حالت ترسو: دور شدن از پکمن
💥 تشخیص برخورد:
• برخورد با روح عادی: کاهش جان
• برخورد با روح ترسو: خورده شدن روح
• بازگشت روح به خانه پس از خورده شدن
⚡ نقاط انرژی:
• فعالسازی power_mode به مدت ۳۰۰ فریم
• تغییر رنگ ارواح به آبی
• قابلیت خوردن ارواح
🏆 امتیازدهی:
• نقطه کوچک: ۱۰
• نقطه انرژی: ۵۰
• روح ترسو: ۲۰۰
• نمایش در نوار بالا
⭐ نقاط قوت پروژه:
• کد کاملاً تمیز و کامنتگذاری شده
• رعایت اصول برنامهنویسی شیگرا (OOP)
• نقشه کامل ۲۱x۲۱ با ۲۴۴ نقطه
• هوش مصنوعی ساده برای ارواح
• انیمیشن دهان پکمن
• ۳ سطح سرعت قابل تنظیم
• ذخیره و بازیابی رکورد
• کنترل روان با صفحه کلید
• قابلیت توقف/ادامه بازی
• بدون وابستگی به کتابخانههای خارجی
• قابل اجرا روی ویندوز، لینوکس و مک
• حجم کم و عملکرد سریع
• طراحی کلاسیک و جذاب
🎯 موارد استفاده:
• سرگرمی و بازی کلاسیک
• یادگیری برنامهنویسی بازی
• پروژه دانشجویی
• آموزش هوش مصنوعی ساده
• تمرین کار با ماتریس و نقشه
• آشنایی با مفاهیم کالیشن
📌 نکات فنی:
• نقشه به صورت ماتریس ۲۱x۲۱
• اعداد: ۰=خالی، ۱=دیوار، ۲=نقطه، ۳=انرژی
• تشخیص حرکت با can_move
• انیمیشن با after و game_loop
• ذخیره رکورد در فایل txt
• مدیریت حالتهای مختلف بازی
با افتخار از درخت کد
محمدمهدی محمودی
treec.net | mohammadmahdimahmoudi.ir