بازی Flappy Bird پیشرفته - پروژه پایتون با Tkinter
🐦 بازی Flappy Bird پیشرفته - پروژه جذاب پایتون
📊 ویژگیهای کلیدی پروژه:
• 🐤 پرنده با طراحی زیبا و چشمهای متحرک
• 🎯 فیزیک واقعی با گرانش و شتاب
• 📦 لولههای تصادفی با فاصله هوشمند
• 🏆 سیستم امتیازدهی (هر لوله +۱)
• 👑 ذخیره خودکار رکورد در فایل
• 💥 انیمیشن برخورد (قرمز شدن صفحه)
• ⭐ انیمیشن کسب امتیاز (+1)
• 🎨 پسزمینه ستارهدار متحرک
• 🌍 زمین با خطوط متحرک
• 🖼️ دکمه شروع و راهنما
• 🎮 صفحه پایان بازی با امتیاز نهایی
• 🔄 قابلیت شروع مجدد
• ⌨️ کنترل با Space و کلیک ماوس
• 🌈 طراحی مدرن و رنگبندی زیبا
🔧 مشخصات فنی پروژه:
• زبان برنامهنویسی: Python 3.8+
• کتابخانههای استفاده شده: tkinter, random, time
• حجم فایل: ۳۲ کیلوبایت
• تعداد خطوط کد: ۴۵۰+ خط کد تمیز و کامنتگذاری شده
• ساختار: برنامهنویسی شیگرا (OOP) با کلاس ModernFlappyBird
• معماری ماژولار با توابع مجزا
• مدیریت خطاهای پیشرفته
🎮 قوانین بازی:
🐦 پرنده:
• موقعیت اولیه: وسط صفحه
• اندازه: ۲۵ پیکسل
• گرانش: ۰.۴ (شتاب سقوط)
• نیروی پرش: ۸- (بالا رفتن)
📦 لولهها:
• عرض: ۷۰ پیکسل
• فاصله بین لولهها: ۲۰۰ پیکسل
• سرعت حرکت: ۴ پیکسل/فریم
• فاصله تولید: هر ۸۰ فریم
• ارتفاع شکاف: تصادفی (۱۵۰-۴۵۰)
📊 امتیاز:
• هر لوله عبور کرده: +۱
• نمایش در نوار بالایی
• انیمیشن +1 کنار پرنده
🏆 رکورد:
• ذخیره در فایل flappy_record.txt
• نمایش با تاج 👑
• انیمیشن ویژه برای رکورد جدید
💻 نحوه اجرا:
# روش اول: اجرای مستقیم
python flappy_bird.py
# روش دوم: اجرا در محیط مجازی (توصیه شده)
python -m venv venv
source venv/bin/activate # در لینوکس/مک
venv\Scripts\activate # در ویندوز
python flappy_bird.py
📁 ساختار پروژه:
flappy-bird-advanced/
├── flappy_bird.py # فایل اصلی پروژه
├── flappy_record.txt # فایل ذخیره رکورد (ایجاد خودکار)
├── README.md
🎨 طراحی بصری:
🎨 پالت رنگی مدرن:
• پسزمینه اصلی: #1a1a2e (بنفش تیره)
• نوار بالایی: #16213e (آبی تیره)
• اکنت: #00cec9 (فیروزهای)
• پرنده: #ffd700 (طلایی) با سایه
• لولهها: #00b894 (سبز) با لبه تیره
• زمین: #2d3436 (خاکستری تیره)
• متن: #ffffff (سفید)
• متن طلایی: #ffd700 (رکورد)
🐤 طراحی پرنده:
• بدن: بیضی با گرادیان (طلایی روشن/تیره)
• چشم: سفید با مردمک سیاه و برق
• نوک: قرمز (#ff6b6b)
• بال: متحرک (در هنگام پرش)
📦 طراحی لولهها:
• بدنه اصلی: سبز روشن (#00b894)
• لبه: سبز تیره (#00695c)
• تزیین: نوار تیره در بالا/پایین
🌍 طراحی زمین:
• مستطیل قهوهای تیره
• خطوط متحرک سفید (انیمیشن حرکت)
✨ افکتها:
• برخورد: صفحه قرمز با stipple
• امتیاز: متن +1 طلایی
• رکورد جدید: متن بزرگ طلایی
⌨️ کنترلهای بازی:
␣ Space: پرش / شروع بازی
🖱️ کلیک ماوس: پرش / شروع بازی
🚀 نحوه بازی:
۱. اجرای برنامه
۲. صفحه شروع با دکمه "▶ شروع بازی" نمایش داده میشود
۳. روی دکمه کلیک کنید یا Space بزنید
۴. راهنما نمایش داده میشود: "👇 Space بزن یا کلیک کن"
۵. با فشردن Space یا کلیک، پرنده میپرد
۶. از بین لولهها عبور کنید
۷. هر بار عبور از لوله:
• +۱ امتیاز
• انیمیشن +1 کنار پرنده
• بهروزرسانی امتیاز
۸. اگر رکورد شکسته شود:
• انیمیشن "🏆 رکورد جدید!"
• ذخیره خودکار
۹. در صورت برخورد:
• صفحه قرمز میشود
• صفحه Game Over با امتیاز نهایی
• دکمه "🔄 بازی جدید"
۱۰. برای بازی مجدد، روی دکمه کلیک کنید
🔄 منطق بازی:
📐 فیزیک پرنده:
• velocity += gravity
• bird_y += velocity
• jump_strength = -8 (پرش)
📏 تولید لوله:
• موقعیت شکاف: random(150, height-250)
• فاصله لولهها: ۲۰۰ پیکسل
• تاخیر تولید: ۸۰ فریم
💥 تشخیص برخورد:
• با زمین: bird_y + size > height-40
• با سقف: bird_y - size < 0
• با لولهها:
- x بین لوله
- y خارج از شکاف
🏆 سیستم امتیاز:
• شرط عبور: pipe['x'] + width < bird_x
• flag passed برای جلوگیری از تکرار
• انیمیشن +1
✨ انیمیشنها:
⭐ انیمیشن امتیاز:
• متن +1 در کنار پرنده
• محو شدن بعد از ۵۰۰ms
💥 انیمیشن برخورد:
• صفحه قرمز با stipple
• محو شدن بعد از ۲۰۰ms
🏆 انیمیشن رکورد:
• متن بزرگ طلایی
• نمایش ۱ ثانیه
🌟 انیمیشن ستارهها:
• ۲۰ ستاره متحرک
• حرکت افقی با frame
🌍 انیمیشن زمین:
• خطوط با حرکت سینوسی
• سرعت ۲ پیکسل/فریم
🎯 پیامهای بازی:
✅ صفحه شروع:
• دکمه "▶ شروع بازی"
• پسزمینه ستارهدار
📝 راهنما:
• "👇 Space بزن یا کلیک کن"
• نمایش ۲ ثانیه
💀 Game Over:
• متن قرمز "GAME OVER"
• امتیاز نهایی
• دکمه "🔄 بازی جدید"
🏆 رکورد جدید:
• "🏆 رکورد جدید!" طلایی
• ذخیره خودکار
⭐ نقاط قوت پروژه:
• کد کاملاً تمیز و کامنتگذاری شده
• رعایت اصول برنامهنویسی شیگرا (OOP)
• فیزیک واقعی با گرانش و شتاب
• انیمیشنهای روان و جذاب
• تشخیص برخورد دقیق
• ذخیره و بازیابی رکورد
• رابط کاربری مدرن و زیبا
• افکتهای بصری چشمنواز
• بدون وابستگی به کتابخانههای خارجی
• قابل اجرا روی ویندوز، لینوکس و مک
• حجم کم و عملکرد سریع
• طراحی حرفهای با جزئیات
🎯 موارد استفاده:
• سرگرمی و بازی اعتیادآور
• یادگیری برنامهنویسی بازی
• پروژه دانشجویی
• آموزش مفاهیم فیزیک در بازی
• تمرین کار با Canvas و انیمیشن
• آشنایی با تشخیص برخورد (Collision Detection)
📌 نکات فنی:
• استفاده از tags برای مدیریت اشیا
• انیمیشن با after و تابع بازگشتی
• ذخیره لیست لولهها با دیکشنری
• تشخیص برخورد با مختصات
• افکتهای موقت با after
• سیستم مختصات دقیق
با افتخار از درخت کد
محمدمهدی محمودی
treec.net | mohammadmahdimahmoudi.ir