Bu proje, klasik yılan oyununun Python ile gerçekleştirilmiş ve yapay zeka ile geliştirilmiş bir versiyonudur. Proje iki ana bileşenden oluşur:
-
Klasik Yılan Oyunu
- 32x32 oyun alanı
- Izgara görünümlü arka plan
- Yeşil yılan ve kırmızı elma
- Her 5 elmada bir artan hız
- Çarpışma kontrolü (duvarlar ve yılanın kendisi)
-
Yapay Zeka Kontrolü
- Deep Q-Learning algoritması
- Deneyim tekrarı (Experience Replay)
- Epsilon-greedy keşif stratejisi
- Eğitim istatistikleri görüntüleme
- Ayarlanabilir eğitim hızı (1x - 512x)
- Geliştirilmiş durum algılama (29 özellik)
- Çıkmaz durumları engelleme
- 4 katmanlı derin sinir ağı mimarisi
-
Genişletilmiş Durum Vektörü (21→29 özellik)
- Çapraz yönlerde engel algılama
- Duvar mesafesi bilgisi
- Çıkmaz durum tespiti
-
İyileştirilmiş Ödül Fonksiyonu
- Çıkmaz durumlar için özel ceza
- Elmaya yaklaşmayı daha iyi ödüllendirme
- Kendi kuyruğuna yaklaşmayı cezalandırma
-
Güçlendirilmiş Model Mimarisi
- 4 katmanlı derin sinir ağı
- 512 boyutlu gizli katmanlar
- Daralan mimari yapı
-
Optimize Edilmiş Hiperparametreler
- Daha büyük bellek kapasitesi (200.000)
- Daha yüksek indirim faktörü (0.995)
- Daha dengeli öğrenme oranı (0.0002)
-
Python 3.8 veya daha yüksek bir sürümün yüklü olduğundan emin olun
-
Proje dizininde bir virtual environment oluşturun:
# macOS/Linux
python3 -m venv venv
# Windows
python -m venv venv
- Virtual environment'ı aktif edin:
# macOS/Linux
source venv/bin/activate
# Windows
.\venv\Scripts\activate
- Gerekli bağımlılıkları yükleyin:
pip install -r requirements.txt
Klasik yılan oyununu oynamak için:
python game.py
Kontroller:
- Yön tuşları: Yılanı kontrol etme
- ESC: Oyundan çıkış
Yapay zekayı eğitmek için:
python train.py
Eğitim sonrası kayıt edilen modeller ile (models klasörü içinde) oyunu başlatmak için:
python play_ai.py --model models/model_record_***.pth
Eğitim Parametreleri:
n_games
: Eğitilecek oyun sayısı (varsayılan: 2000)batch_size
: Her adımda eğitilecek örnek sayısı (varsayılan: 64)target_update_freq
: Hedef ağ güncelleme sıklığı (varsayılan: 50 adım)
Eğitim Ekranı:
- Sol tarafta oyun alanı
- Sağ tarafta eğitim istatistikleri:
- Mevcut skor
- Rekor skor
- Ortalama skor
- Epsilon değeri
- Adım sayısı
- FPS
Hız Kontrolü:
- Eğitim hızını ayarlamak için sağ alt köşedeki butonları kullanın:
- 1x: Normal hız
- 8x: 8 kat hızlı
- 16x: 16 kat hızlı
- 128x: 128 kat hızlı
- 512x: 512 kat hızlı
.
├── game.py # Oyun motoru ve arayüzü
├── ai_model.py # Yapay zeka modeli (DQN)
├── train.py # Eğitim döngüsü
├── play_ai.py # Eğitilmiş model ile oynatma
├── direction.py # Yön enumları
├── constants.py # Sabitler
├── requirements.txt # Bağımlılıklar
├── models/ # Eğitilmiş modeller
└── README.md # Dokümantasyon
Yeni paketler eklemek için:
pip install paket_adi
pip freeze > requirements.txt
.gitignore
dosyası sayesindevenv
klasörü ve__pycache__
git'e dahil edilmez- Her yeni geliştirme ortamında kurulum adımlarını tekrarlayın
- Eğitim sırasında model ağırlıkları otomatik olarak kaydedilir
- Daha iyi sonuçlar için eğitimi daha uzun süre çalıştırın (n_games > 2000)