Proje Özeti
Perfect Timer Game, kullanıcıların zaman algısını ve refleks hızını milisaniye düzeyinde test eden bir simülasyon aracıdır. Python'un Tkinter kütüphanesi kullanılarak geliştirilen bu proje, olay tabanlı (event-driven) programlama mimarisi üzerine inşa edilmiştir. Temel amaç, belirlenen bir hedef süreye (örneğin 5.000 saniye) mümkün olan en yakın anda kronometreyi durdurmaktır.
Teknik Mimari ve Özellikler
Hassas Zaman Yönetimi
Oyunun çekirdeğinde, Python'un time modülü kullanılarak geliştirilmiş yüksek hassasiyetli bir sayaç mekanizması bulunur. Bu mekanizma, sistem saatini referans alarak milisaniye düzeyinde sapmaları hesaplar ve kullanıcıya anlık geri bildirim sağlar.
Olay Tabanlı GUI Tasarımı
Kullanıcı arayüzü, Tkinter'in olay döngüsü (mainloop) ile entegre çalışacak şekilde tasarlanmıştır. Buton tıklamaları ve zamanlayıcı güncellemeleri, ana iş parçacığını (main thread) bloke etmeden asenkron bir yapıda işlenir.
Dinamik Zorluk ve Skorlama
- Hedef Süre Seçimi: Kullanıcı, farklı zorluk seviyelerine göre hedef süreleri dinamik olarak belirleyebilir.
- Hata Payı Hesaplama: Durdurma anı ile hedef süre arasındaki fark, mutlak değer üzerinden hesaplanarak skorlama algoritmasına dahil edilir.
Kullanılan Teknolojiler
| Teknoloji | Rolü | |-----------|----------------| | Python 3.x | Çekirdek mantık ve uygulama çatısı | | Tkinter | Grafiksel kullanıcı arayüzü (GUI) ve olay yönetimi | | Time Modülü | Yüksek hassasiyetli zaman ölçümü |
Tech Stack
- Python 3.x
- Tkinter (GUI)
- Time Module
Technical Architecture
UI -> Timer Engine -> Scoring -> Local Storage
Challenges & Lessons Learned
- Zaman sapmalarini en aza indirmek
- Event loop icinde gecikmesiz guncelleme
- Adil skorlama ve geri bildirim tasarimi
Testing / Logging / Monitoring
- Tests: Manuel senaryolar (farkli hedef sureler)
- Logging: Skor/oturum kayitlari
- Monitoring: Yerel uygulama, izleme gerektirmez
Kurulum
Projeyi yerel ortamda çalıştırmak için:
- Depoyu klonlayın:
git clone https://github.com/furkandalyan/Perfect-Timer-Game.git - Başlatın:
python main.py