Kocaeli Üniversitesi Mühendislik Fakültesi Yazılım Mühendisliği 24-25 Programlama Laboratuvarı III Projesi GitHub sayfası. Spacewar Oyunu.
- Kullanılan Araçlar
- Amaç
- Projeden Beklenenler
- Karşılanan Beklentiler
- İndirme ve Çalıştırma
- Teşekkürler
- Oynanış Videosu
- 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 |
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.
{
"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ı."
}
}
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. |
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
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ı.
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.