Skip to content

Kocaeli Üniversitesi Mühendislik Fakültesi Yazılım Mühendisliği 24-25 Programlama Laboratuvarı III Projesi GitHub sayfası. Spacewar Oyunu.

License

Notifications You must be signed in to change notification settings

metehansenyer/KOU-YZM209-CSGameProject-Spacewar

Repository files navigation

KOÜ Yazılım Müh. Programlama Laboratuvarı III Dersi Projesi

Kocaeli Üniversitesi Mühendislik Fakültesi Yazılım Mühendisliği 24-25 Programlama Laboratuvarı III Projesi GitHub sayfası. Spacewar Oyunu.

İçerik

Kullanılan Araçlar

csharp raylib rider photoshop

  • Oyunun yapımında sadece C# dili kullanılmıtır.
  • Geliştirme sürecinde JetBrains'in Rider yazılımı kullanılmıştır.
  • Konsol uygulaması olarak geliştirildi.
  • MacOS işletim sisteminde test edildi.
Kullanılan Araç Tavsiye Linkler
C# Microsoft
C# Murat Yücedağ C# Eğitim Kampı
Raylib Tüm Raylib Özellikleri
Raylib-cs C# Raylib Paketi
Sınıf Diyagramı Plant Text
İllüstrasyonlar Itch.io
Ses Efektleri Freesound
Ses Efektleri Pixabay
Çarpışma Sistemi Çember ve Üçgen Kesişim Algoritması
Çarpışma Sistemi Üçgen içinde Nokta Testi / Same Side Tekniği
Animasyon Animations Guide

Amaç

YZM209 dersi kapsamında, bugüne kadar öğrendiğimiz bilgiler ve C# dili kullanılarak, belirlenen özelliklere sahip bir Spacewar Oyunu geliştirmek hedeflenmektedir. Proje, OOP prensiplerini (kalıtım, kapsülleme, polimorfizm) kullanarak uzay savaşı temasında bir oyun oluşturmayı ve öğrencilerin yazılım geliştirme becerilerini pekiştirmesini amaçlamaktadır.

Projeden Beklenenler

{
  "Anahtar Özellikler": {
    "Başlat": "Oyunu başlatma özelliği (StartGame).",
    "Güncelle": "Oyun sırasında oyuncu ve düşman hareketlerini güncelleme özelliği (UpdateGame).",
    "Çarpışma Algılama": "Mermiler ve uzay gemilerinin çarpışmalarını algılama özelliği (CheckCollisions).",
    "Bitir": "Oyun sona erdiğinde skor ve mesaj gösterme özelliği (EndGame)."
  },
  "Sınıflar ve Özellikleri": {
    "Game": {
      "Özellikler": [
        "Oyuncunun uzay gemisi (Spaceship).",
        "Düşman uzay gemilerinin listesi (List<Enemy>).",
        "Oyun bitiş durumu (isGameOver)."
      ],
      "Metotlar": [
        "StartGame(): Oyunu başlatır.",
        "UpdateGame(): Oyun akışını her karede günceller.",
        "CheckCollisions(): Çarpışmaları kontrol eder.",
        "EndGame(): Oyun bitiş işlemlerini yönetir."
      ]
    },
    "Spaceship": {
      "Özellikler": [
        "Sağlık durumu (health).",
        "Hız (speed).",
        "Ateşlenen mermilerin listesi (bullets)."
      ],
      "Metotlar": [
        "Move(direction): Belirtilen yöne hareket eder.",
        "Shoot(): Mermi ateşler.",
        "TakeDamage(amount): Sağlık puanını günceller."
      ]
    },
    "Enemy": {
      "Özellikler": [
        "Sağlık durumu (health).",
        "Hız (speed).",
        "Hasar miktarı (damage)."
      ],
      "Soyut Metotlar": [
        "Move(): Hareket algoritmasını uygular.",
        "Attack(): Oyuncuya saldırır."
      ]
    },
    "Bullet": {
      "Özellikler": [
        "Hız (speed).",
        "Hasar (damage).",
        "Yön (direction)."
      ],
      "Metotlar": [
        "Move(): Merminin ekrandaki ilerlemesini sağlar.",
        "OnHit(): Çarpışma durumunda hasar uygular ve mermiyi yok eder."
      ]
    },
    "CollisionDetector": {
      "Metotlar": [
        "CheckCollision(): Oyuncu ve düşman çarpışmalarını kontrol eder.",
        "CheckBulletCollision(): Mermilerin çarpışma durumlarını kontrol eder."
      ]
    }
  },
  "OOP Prensipleri": {
    "Kalıtım": "Enemy sınıfı, farklı düşman türlerinin temel sınıfıdır.",
    "Polimorfizm": "Farklı düşman türleri aynı metotları farklı şekilde uygular.",
    "Kapsülleme": "Özellikler private olarak tutulur ve sadece metotlar aracılığıyla erişilir."
  },
  "Ek İşlevsellikler": {
    "Power-Ups": "Ekstra can, hız veya hasar kazandıran güçlendirme nesneleri.",
    "Level Sistemi": "Artan zorluk seviyeleri ile oyunun ilerleyişi.",
    "Puan Sistemi": "Farklı düşman türlerinden kazanılan puanlar.",
    "Engel Yapıları": "Ekranda yer alan ve çarpışma durumunda hasar veren engeller."
  },
  "Görsel ve Teknik Gereklilikler": {
    "GUI": "Grafiksel kullanıcı arayüzü oluşturulması.",
    "Dil": "C# programlama dili kullanılması.",
    "Raporlama": "Proje kodlarının ve açıklamalarının raporlanması."
  }
}

Karşılanan Beklentiler

Beklenti Durum Detay
Anahtar Özellikler -
Sınıflar ve Özellikleri Tüm sınıf özellikleri sağlanmıştır. Ek olarak ihtiyaçlar dahilinde
ekstra sınıflar da oluşturulmuştur. Bullet sınıfı da
soyut sınıf haline getirilip çeşitlilik sağlanmıştır.
OOP Prensipleri -
Ek İşlevsellikler ⚠️ Engel Yapıları hariç diğer tüm ek özellikler sağlanmıştır.
Engel yapıları ekranda oluşan karışıklık nedeniyle tercih edilmemiştir.
Tasarlanan görseller "kaynak" klasöründedir.
Görsel ve Teknik Gereklilikler Ekstra olarak kullanıcıya oyunun dili, müzik sesi ve efekt sesi
gibi özellikleri değiştirme imkanı sağlanmıştır.

İndirme ve Çalıştırma

Bu bağlantıyı kullanarak kaynak dosyaları indirebilir ve projemizi yerel olarak çalıştırabilirsiniz. Git üzerinden indirmek isterseniz:

git clone https://github.com/metehansenyer/KOU-YZM209-CSGameProject-Spacewar.git

Sadece Oynamak İsterseniz

Platform İndirme Linki
win-x64 Tıkla
osx-x64 Tıkla

Important

MacOS kullanıcıları oyunu açmak için dosyayı çıkardıkları dizini terminalde açıp
./KOU-YZM209-CSGameProject-Spacewar komutunu kullanmalılar.
Normal açıldığında kaplamalar yüklenmiyor.

Note

Sorun üzerine çok uğraşmaya vaktim olmadığı için çözemedim.
Çözüm önerilerine açığım. *.app haline getirmek işe yaramadı.

Teşekkürler

Zor şartlar altındaki proje sunumumdaki yardımlarından dolayı Kocaeli Üniversitesi Yazılım Mühendisliği Bölümü'den Araştırma Görevlisi Melike Bektaş Kösesoy ve Araştırma Görevlisi Şevval Şolpan hocama teşekkürlerimi arz ederim.

Oynanış Videosu

githubVideo.mov

About

Kocaeli Üniversitesi Mühendislik Fakültesi Yazılım Mühendisliği 24-25 Programlama Laboratuvarı III Projesi GitHub sayfası. Spacewar Oyunu.

Topics

Resources

License

Stars

Watchers

Forks

Languages