پیادهسازی سادهای از بازی کلاسیک Chicken Invaders با جاوا و Swing
شامل ۸ مرحله، ۴ نوع دشمن، ۲ غول، پاورآپها، سیستم کاربران و پایگاه داده
این پروژه، نسخهی سادهشدهی بازی Chicken Invaders است که بهکمک زبان جاوا و کتابخانهی Swing پیادهسازی شده است.
بازیکن با یک هواپیما، گروهی از مرغها را در یک شبکهی ۵×۸ نابود میکند و در طی ۸ مرحله با چالشهای مختلفی از جمله غولهای میانی و نهایی روبرو میشود.
- ۸ مرحلهی متنوع با پارامترهای متفاوت (سرعت، سلامت دشمنان، نرخ تخماندازی)
- ۴ نوع مرغ با رفتارهای مختلف:
- Normal (حرکت معمولی)
- Fast (سرعت بیشتر)
- Zigzag (حرکت زیگزاگ)
- Shooter (شلیک افقی به سمت بازیکن)
- دو غول (مراحل ۴ و ۸) با الگوهای حملهی ۴ و ۸ جهته
- سیستم پاورآپ با ۵ نوع مختلف (Add Fire, Rapid Fire, Extra Life, Shield, Freeze Bomb)
- پایگاه داده SQLite برای ذخیرهی کاربران، رکورد بازیها و تنظیمات صدا
- سیستم ثبتنام و ورود کاربران
- منوهای کامل شامل New Game, High Scores, Settings, How to Play, Exit
- تنظیمات صدا با قابلیت روشن/خاموش کردن جداگانه (موسیقی، شلیک، برخورد، پایان بازی)
- افکتهای بصری (انفجار، محو شدن، چرخش پاورآپها)
- HUD نمایش امتیاز، سطح، جان، نام کاربر، تعداد تیرها و وضعیت پاورآپها
| کلید | عملکرد |
|---|---|
| → / D | حرکت به راست |
| ← / A | حرکت به چپ |
| ↑ / W | حرکت به بالا |
| ↓ / S | حرکت به پایین |
| Space | شلیک گلوله |
| P | توقف / ادامهی بازی (Pause) |
| Esc | بازگشت به منوی اصلی (پایان بازی) |
تمام تصاویر و صداهای موردنیاز در پوشههای زیر قرار گرفتهاند:
resources/ ├── images/ │ ├── airplan/ (تصاویر هواپیما و انفجار) │ ├── background/ (تصاویر پسزمینه) │ ├── chicken/ (تصاویر مرغها و تخممرغ) │ ├── powerup1/ (تصاویر پاورآپها) │ └── powerup2/ (تصاویر جایگزین) └── sounds/ └── sound-effects/ (فایلهای صوتی WAV)
نکته: فایلهای صوتی با فرمت WAV استاندارد (PCM 16-bit 44100 Hz) باید باشند تا در جاوا بهدرستی پخش شوند.
پایگاه داده با نام game.db در ریشهی پروژه ایجاد میشود و شامل دو جدول است:
| ستون | نوع | توضیح |
|---|---|---|
| username | TEXT | نام کاربری (کلید اصلی) |
| password | TEXT | رمز عبور (متن ساده) |
| highScore | INTEGER | بالاترین امتیاز |
| soundSettings | TEXT | تنظیمات صدا (مثل true,true,true,true) |
| lastLevel | INTEGER | آخرین سطح رسیده |
| ستون | نوع | توضیح |
|---|---|---|
| id | INTEGER | شناسه (خودکار) |
| username | TEXT | نام کاربری |
| score | INTEGER | امتیاز نهایی |
| level | INTEGER | آخرین سطح رسیده |
| timestamp | DATETIME | تاریخ و زمان بازی |
| soundSettings | TEXT | تنظیمات صدا در آن زمان |
- JDK 21 یا بالاتر
- کتابخانهی sqlite-jdbc (فایل
.jarدر پوشهیlib/قرار داده شود)
- پروژه را بهعنوان یک پروژهی جاوا باز کنید.
- مسیر
lib/sqlite-jdbc-*.jarرا به Classpath اضافه کنید. - کلاس
GameMainرا اجرا کنید.
# کامپایل
javac -cp "lib/*" -d out src/main/java/com/chickeninvaders/*.java
# اجرا
java -cp "out;lib/*" com.chickeninvaders.GameMain
ساختار کلاسها
com.chickeninvaders/
├── GameMain.java # نقطهی ورود و مدیریت پنلها
├── MainMenu.java # منوی اصلی
├── LoginPanel.java # صفحهی ورود
├── RegisterPanel.java # صفحهی ثبتنام
├── HighScorePanel.java # جدول امتیازات
├── SettingsPanel.java # تنظیمات صدا
├── HowToPlayPanel.java # راهنما
├── StorePanel.java # فروشگاه (اختیاری)
├── GamePanel.java # پنل اصلی بازی
├── Plane.java # هواپیما
├── Enemy.java (abstract) # کلاس پایهی دشمن
├── Cell.java # یک خانه از شبکهی مرغها
├── EnemyGrid.java # شبکهی مرغها
├── Boss.java (abstract) # کلاس پایهی غول
├── BossLevel4.java # غول مرحلهی ۴
├── BossLevel8.java # غول مرحلهی ۸
├── Bullet.java # گلولهی بازیکن
├── Egg.java # تخممرغ یا گلولهی دشمن
├── PowerUp.java # پاورآپ
├── Explosion.java # افکت انفجار
├── User.java # مدل کاربر
├── DatabaseManager.java # مدیریت پایگاه داده
└── SoundManager.java # مدیریت صداها
## اطلاعات دانشجو
نام و نام خانوادگی: امیررضا محمدپور
شماره دانشجویی: 40312041
نام درس: برنامهسازی پیشرفته
استاد: استاد احمدیان
## 🔗 لینک مخزن گیتهاب
[GitHub Repository - Chicken Invaders](https://github.com/amirrezamohammadpour/ChickenInvaders)