Bu proje, farklı zaman akışına sahip gezegenler arasında yolculuk yapan uzay gemilerini ve gemilerdeki insanların yaşam süresini simüle eden bir Java konsol uygulamasıdır.
Simülasyon saatlik olarak ilerler ve:
- 🌍 Gezegenlerin tarihlerini günceller
- 🚀 Uzay gemilerinin durumlarını değiştirir (Bekliyor, Yolda, Vardı, İmha)
- 👨🚀 İnsanların kalan ömrünü azaltır
- 💀 Ölen kişileri sistemden çıkarır
- 👥 Gezegen nüfuslarını dinamik olarak günceller
Bu proje aşağıdaki kavramları uygulamak amacıyla geliştirilmiştir:
- Nesne Yönelimli Programlama (OOP)
- Sınıflar arası ilişki yönetimi
- Statik veri yapıları
- Dosya okuma işlemleri
- Zaman ve tarih hesaplamaları
- Simülasyon mantığı
- Gezegen adı
- Günlük saat sayısı
- Tarih bilgisi
- Nüfus
- Gezegendeki uzay araçları
Durumlar:
-
BEKLIYOR
-
YOLDA
-
VARDI
-
IMHA
-
VARDIKTAN_SONRA_IMHA
-
Kalkış gezegeni
-
Varış gezegeni
-
Kalkış tarihi
-
Varış tarihi
-
Kalan mesafe (saat)
-
İçindeki yaşayan kişiler
- İsim
- Yaş
- Kalan ömür (saat)
- Yaşıyor mu?
- Bulunduğu uzay gemisi
- Gün / Ay / Yıl
- Tarih karşılaştırma
- Gün artırma
- İki tarih arasındaki gün farkı
- Artık yıl hesaplama
- Tarihe gün ekleme
Sistemi başlatmak için şu dosyaları okur:
- gezegenler.txt
- araclar.txt
- kisiler.txt
Ana simülasyon döngüsünü içerir.
Her döngüde:
- Ekran temizlenir
- Gezegen bilgileri yazdırılır
- Uzay araçları yazdırılır
- Tüm gezegenlerin zamanı 1 saat ilerletilir
- Kalkış zamanı gelen gemi YOLDA olur
- Varış zamanı gelen gemi VARDI olur
- İnsanların kalan ömrü 1 saat azaltılır
- Ölen kişiler gemiden çıkarılır
- Gezegen nüfusları güncellenir
- Gemide kimse kalmazsa gemi IMHA olur
Simülasyon, tüm gemiler varana veya imha edilene kadar devam eder.
Format: GezegenAdi#GunlukSaat#gg.aa.yyyy
Örnek: Mars#24#01.01.2020 Venus#30#05.03.2020
Format: AracAdi#KalkisGezegeni#VarisGezegeni#KalkisTarihi#MesafeSaat
Örnek: Apollo#Mars#Venus#03.01.2020#120
Format: Isim#Yas#KalanOmurSaat#BulunduguArac
Örnek: Ali#25#300#Apollo Ayse#30#200#Apollo
-
Projeyi klonlayın: git clone https://github.com/AhmetCebeci/SpaceTravelSimulation.git
-
Girdi dosyalarını OkunacakDosya klasörüne yerleştirin.
-
Simulation sınıfını çalıştırın.
- OOP prensipleri
- Composition ilişkileri
- Statik koleksiyon kullanımı
- Simülasyon mantığı kurma
- Dosya okuma (BufferedReader)
- Tarih hesaplama algoritmaları
- State (Durum) yönetimi
- Her gezegenin gün uzunluğu farklı olabilir
- Varış tarihi kalkış gezegeninin zamanına göre hesaplanır
- Mesafe saat cinsindendir
- İnsanlar yalnızca yaşadıkları sürece nüfusa dahil edilir
- Gemideki herkes ölürse gemi IMHA olur
- Nüfus, geminin bulunduğu gezegene göre hesaplanır
- Grafik arayüz (GUI)
- Gerçek zamanlı animasyon
- Çoklu gezegen arası rota sistemi
- Yakıt sistemi
- Rastgele olaylar
- Thread kullanarak paralel simülasyon
Bu proje eğitim ve OOP pratiği amacıyla geliştirilmiştir.
Bu proje eğitim amaçlıdır. Serbestçe geliştirilebilir ve kullanılabilir.