Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🐔 Chicken Invaders - پروژه نهایی درس AP

Java Swing SQLite

پیاده‌سازی ساده‌ای از بازی کلاسیک 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) باید باشند تا در جاوا به‌درستی پخش شوند.


🗄️ پایگاه داده (SQLite)

پایگاه داده با نام game.db در ریشه‌ی پروژه ایجاد می‌شود و شامل دو جدول است:

جدول users

ستون نوع توضیح
username TEXT نام کاربری (کلید اصلی)
password TEXT رمز عبور (متن ساده)
highScore INTEGER بالاترین امتیاز
soundSettings TEXT تنظیمات صدا (مثل true,true,true,true)
lastLevel INTEGER آخرین سطح رسیده

جدول game_records

ستون نوع توضیح
id INTEGER شناسه (خودکار)
username TEXT نام کاربری
score INTEGER امتیاز نهایی
level INTEGER آخرین سطح رسیده
timestamp DATETIME تاریخ و زمان بازی
soundSettings TEXT تنظیمات صدا در آن زمان

🚀 نحوه‌ی اجرا

پیش‌نیازها

  • JDK 21 یا بالاتر
  • کتابخانه‌ی sqlite-jdbc (فایل .jar در پوشه‌ی lib/ قرار داده شود)

اجرا با IDE (مثلاً IntelliJ IDEA)

  1. پروژه را به‌عنوان یک پروژه‌ی جاوا باز کنید.
  2. مسیر lib/sqlite-jdbc-*.jar را به Classpath اضافه کنید.
  3. کلاس 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)

About

Chicken Invaders - a simple Java Swing game with 8 levels, 4 enemy types, 2 bosses, power-ups, user system and SQLite database

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages