بازی Space Invaders - پروژه پایتون با Tkinter
👾 بازی Space Invaders - پروژه کلاسیک پایتون
📊 ویژگیهای کلیدی پروژه:
• 🛸 دشمنان چند رنگ با انیمیشن چشمهای متحرک
• ⭐ ۱۰۰ ستاره متحرک در پسزمینه
• 🚀 سفینه بازیکن با طراحی مثلثی
• 🔫 سیستم شلیک دوطرفه (بازیکن و دشمن)
• 💥 افکت انفجار با انیمیشن
• 📈 ۵ سطح دشواری (با افزایش سرعت دشمنان)
• 🏆 سیستم امتیازدهی (۱۰ امتیاز × سطح برای هر دشمن)
• 💾 ذخیره خودکار رکورد
• ❤️ ۳ جان برای بازیکن
• ⏸️ قابلیت توقف/ادامه با کلید P
• 🎮 صفحه شروع با لوگو و راهنما
• 🏁 صفحه پایان با نمایش امتیاز نهایی
• 🎯 تشخیص برخورد دقیق
• 🔄 ریست کامل بازی
🔧 مشخصات فنی پروژه:
• زبان برنامهنویسی: Python 3.8+
• کتابخانههای استفاده شده: tkinter, random, math
• حجم فایل: ۵۸ کیلوبایت
• تعداد خطوط کد: ۷۵۰+ خط کد تمیز و کامنتگذاری شده
• ساختار: برنامهنویسی شیگرا (OOP) با کلاس SpaceInvaders
• معماری ماژولار با توابع مجزا
• مدیریت خطاهای پیشرفته
🎮 عناصر بازی:
🚀 سفینه بازیکن:
• ابعاد: ۷۰x۴۰ پیکسل
• شکل: مثلثی (سر پیکان)
• رنگ: فیروزهای (#00ffff)
• سرعت حرکت: ۱۲ پیکسل/فریم
• موقعیت: پایین صفحه
👾 دشمنان:
• ۵ رنگ مختلف:
- قرمز (#ff4444)
- نارنجی (#ffaa00)
- صورتی (#ff66ff)
- سبز (#44ff44)
- آبی (#4444ff)
• ابعاد: ۴۰x۳۰ پیکسل
• انیمیشن چشمها (بالا/پایین)
• آرایش: ردیفهای ۳ + سطح
✨ ستارهها:
• تعداد: ۱۰۰ عدد
• اندازه: ۱-۳ پیکسل
• سرعت: ۰.۵-۲ پیکسل/فریم
• حرکت عمودی با ریست خودکار
💥 انفجار:
• اندازه: افزایشی (۰ تا ۲۰)
• رنگ: نارنجی با حاشیه قرمز
• مدت: ۱۰ فریم
• موقعیت: مرکز برخورد
📊 سیستم سطوح:
• سطح ۱: ۴ ردیف دشمن
• سطح ۲: ۵ ردیف دشمن
• سطح ۳: ۶ ردیف دشمن
• سطح ۴: ۷ ردیف دشمن
• سطح ۵: ۸ ردیف دشمن
افزایش سرعت: base_speed + level × ۰.۵
💻 نحوه اجرا:
# روش اول: اجرای مستقیم
python space_invaders.py
# روش دوم: اجرا در محیط مجازی (توصیه شده)
python -m venv venv
source venv/bin/activate # در لینوکس/مک
venv\Scripts\activate # در ویندوز
python space_invaders.py
📁 ساختار پروژه:
space-invaders-game/
├── space_invaders.py # فایل اصلی پروژه
├── space_record.txt # فایل ذخیره رکورد (ایجاد خودکار)
├── README.md
🎨 طراحی بصری:
📊 پنل بالایی:
• عنوان "👾 SPACE INVADERS 👾" (سبز)
• امتیاز (زرد)
• رکورد (طلایی)
• جانها (قرمز)
• سطح (فیروزهای)
🖼️ صفحه بازی:
• پسزمینه مشکی با ستارهها
• سفینه بازیکن (فیروزهای)
• دشمنان رنگی با چشمهای سفید
• گلولههای بازیکن (زرد)
• گلولههای دشمن (قرمز)
• انفجار (نارنجی)
🎮 صفحه منو:
• لوگوی بزرگ "👾 SPACE INVADERS 👾"
• دشمنان نمونه رنگی
• راهنمای کامل
• دکمه شروع
🏁 صفحه پایان:
• "💀 GAME OVER 💀" قرمز
• امتیاز نهایی سفید
• پیام رکورد جدید طلایی
⌨️ کنترلهای بازی:
← : حرکت به چپ
→ : حرکت به راست
Space : شلیک
P : توقف/ادامه بازی
🚀 نحوه بازی:
۱. اجرای برنامه
۲. صفحه منو با راهنما نمایش داده میشود
۳. دکمه "▶ شروع بازی" را بزنید
۴. با کلیدهای ← → سفینه را حرکت دهید
۵. با Space به سمت دشمنان شلیک کنید
۶. هر دشمن ۱۰ × سطح امتیاز دارد
۷. از گلولههای دشمن فرار کنید
۸. با ۳ بار برخورد، بازی تمام میشود
۹. پس از نابودی همه دشمنان، به سطح بعد میروید
۱۰. با رسیدن دشمنان به پایین صفحه، بازی تمام میشود
۱۱. رکورد شما ذخیره میشود
۱۲. با دکمه "🔄 ریست" میتوانید از نو شروع کنید
🔄 منطق بازی:
👾 حرکت دشمنان:
• حرکت دستهجمعی افقی
• تغییر جهت در برخورد با لبه
• سقوط ۱۵ پیکسل در هر تغییر جهت
• بررسی رسیدن به پایین
🎯 شلیک:
• کولداون ۱۰ فریم برای بازیکن
• شلیک تصادفی دشمن (۱ از ۳۰ شانس)
• سرعت گلوله: ۱۲ پیکسل/فریم
💥 تشخیص برخورد:
• گلوله بازیکن ↔ دشمن
• گلوله دشمن ↔ سفینه
• دشمن ↔ سفینه
• انفجار در محل برخورد
📈 افزایش سطح:
• نابودی همه دشمنان
• افزایش تعداد ردیفها
• افزایش سرعت
• نمایش پیام "سطح X"
⭐ نقاط قوت پروژه:
• کد کاملاً تمیز و کامنتگذاری شده
• رعایت اصول برنامهنویسی شیگرا (OOP)
• ۵ سطح دشواری
• انیمیشن چشمهای دشمن
• سیستم ستارههای متحرک
• افکت انفجار
• ذخیره رکورد
• کنترل روان با صفحه کلید
• قابلیت توقف/ادامه بازی
• بدون وابستگی به کتابخانههای خارجی
• قابل اجرا روی ویندوز، لینوکس و مک
• حجم کم و عملکرد عالی
• طراحی جذاب و کلاسیک
🎯 موارد استفاده:
• سرگرمی و بازی کلاسیک
• یادگیری برنامهنویسی بازی
• پروژه دانشجویی
• آموزش مفاهیم آرایه دوبعدی
• تمرین کار با لیست دیکشنریها
• آشنایی با کولیشن دتکشن
📌 نکات فنی:
• ذخیره دشمنان در لیست دیکشنری
• ۱۰۰ ستاره با حرکت پیوسته
• انیمیشن چشمها با animation % 10
• انفجار با frame و حذف خودکار
• تشخیص پایان سطح با any(e['active'] for e in enemies)
• کولداون شلیک با shoot_cooldown
با افتخار از درخت کد
محمدمهدی محمودی
treec.net | mohammadmahdimahmoudi.ir