Skip to content

AhmetCebeci/SpaceTravelSimulation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Space Travel Simulation (Java)

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

📌 Proje Amacı

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ığı

🧱 Proje Yapısı

🔹 Planet

  • Gezegen adı
  • Günlük saat sayısı
  • Tarih bilgisi
  • Nüfus
  • Gezegendeki uzay araçları

🔹 Spaceship

Durumlar:

  • BEKLIYOR

  • YOLDA

  • VARDI

  • IMHA

  • VARDIKTAN_SONRA_IMHA

  • Kalkış gezegeni

  • Varış gezegeni

  • Kalkış tarihi

  • Varış tarihi

  • Kalan mesafe (saat)

  • İçindeki yaşayan kişiler

🔹 Person

  • İsim
  • Yaş
  • Kalan ömür (saat)
  • Yaşıyor mu?
  • Bulunduğu uzay gemisi

🔹 Date

  • Gün / Ay / Yıl
  • Tarih karşılaştırma
  • Gün artırma

🔹 TimeCalculate

  • İki tarih arasındaki gün farkı
  • Artık yıl hesaplama
  • Tarihe gün ekleme

🔹 ReadFiles

Sistemi başlatmak için şu dosyaları okur:

  • gezegenler.txt
  • araclar.txt
  • kisiler.txt

🔹 Simulation

Ana simülasyon döngüsünü içerir.


🕒 Simülasyon Nasıl Çalışır?

Her döngüde:

  1. Ekran temizlenir
  2. Gezegen bilgileri yazdırılır
  3. Uzay araçları yazdırılır
  4. Tüm gezegenlerin zamanı 1 saat ilerletilir
  5. Kalkış zamanı gelen gemi YOLDA olur
  6. Varış zamanı gelen gemi VARDI olur
  7. İnsanların kalan ömrü 1 saat azaltılır
  8. Ölen kişiler gemiden çıkarılır
  9. Gezegen nüfusları güncellenir
  10. Gemide kimse kalmazsa gemi IMHA olur

Simülasyon, tüm gemiler varana veya imha edilene kadar devam eder.


📂 Girdi Dosya Formatları

gezegenler.txt

Format: GezegenAdi#GunlukSaat#gg.aa.yyyy

Örnek: Mars#24#01.01.2020 Venus#30#05.03.2020

araclar.txt

Format: AracAdi#KalkisGezegeni#VarisGezegeni#KalkisTarihi#MesafeSaat

Örnek: Apollo#Mars#Venus#03.01.2020#120

kisiler.txt

Format: Isim#Yas#KalanOmurSaat#BulunduguArac

Örnek: Ali#25#300#Apollo Ayse#30#200#Apollo


⚙️ Nasıl Çalıştırılır?

  1. Projeyi klonlayın: git clone https://github.com/AhmetCebeci/SpaceTravelSimulation.git

  2. Girdi dosyalarını OkunacakDosya klasörüne yerleştirin.

  3. Simulation sınıfını çalıştırın.


🎯 Öğrenilen Kavramlar

  • OOP prensipleri
  • Composition ilişkileri
  • Statik koleksiyon kullanımı
  • Simülasyon mantığı kurma
  • Dosya okuma (BufferedReader)
  • Tarih hesaplama algoritmaları
  • State (Durum) yönetimi

🧠 Teknik Detaylar

  • 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

🚀 Geliştirme Fikirleri

  • Grafik arayüz (GUI)
  • Gerçek zamanlı animasyon
  • Çoklu gezegen arası rota sistemi
  • Yakıt sistemi
  • Rastgele olaylar
  • Thread kullanarak paralel simülasyon

👨‍💻 Geliştirici

Bu proje eğitim ve OOP pratiği amacıyla geliştirilmiştir.


📜 Lisans

Bu proje eğitim amaçlıdır. Serbestçe geliştirilebilir ve kullanılabilir.

About

A console-based Java application simulating interplanetary travel with dynamic time systems per planet, spaceship routes, and life expectancy management for passengers. Data is read from text files and modeled using object-oriented design following SOLID principles, especially the Single Responsibility Principle.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages