Bu, Türkçe dilinde geliştirilmiş geleneksel bir tavla oyunudur. Oyunda kullanılan görseller, ikon, tavla tahtası, pullar, zar resimleri vb gibi herşey kişisel emeğimdir. Ayrıca, YZ’yi doğru yönlendirmek için algoritmaların oluşturulması, hataların denetimi, testler, her aşamada ortaya çıkan sorunların nedenlerinin tespiti ve daha birçok aşamada aktif olarak çalıştım. Harici olarak kulanılan bazı ses dosyaları ise kamu malıdır (kıraathane ortamı sesi). Zar sallama sesi ve atma sesi “creative common” lisanslıdır ve atıf zorunlu değildir. MIDI dosyalarından dönüştürülmüş “mirkelam_tavla.mp3” ve “mirkelam_win.mp3” adlı dosyalar, Türk pop sanatçısı Mirkelam’ın “Tavla” adlı şarkısından kırpılmış seslerin işlenmiş sahte versiyonlarıdır (DMCA sorununu aşmak ve lisanstan kaçınmak için).

tavlaicon.png - oyunun resmi ikonu. Kendim yaptım, YZ değil.
Test Videosu:
(youtube videosundaki müzikler iptal edilerek yerlerine MIDI tabanlı benzerleri getirilmiştir).
Oyun, geleneksel tavla oyununu birebir taklit eder. Oyunun motoru bir ana python kodu (tavla.py) ve yardımcı iki yapay zeka dosyasından oluşur. Bu yapay zeka dosyaları aslında karar verme mekanizmaları içeren basit python betikleridir. Zar atabilirler ve taşların yerlerini tespit ederek ne yapacaklarına rassal karar verirler. Ardından hamle yaparlar.
Oyun başladığında kısa bir melodi ile başlar. Ardından kıraathane ortamı sesi başlar. Oyun boyunca çalar. Bu, kullanıcı için bir tür ses hoşluğu içindir.
Oyuna başlamak için Zarı At butonuna basmalısınız. İlk zarı her zaman oyuncu atar. İlk zarı atmadan önce tahta düzenini tersine çevirebilirsiniz. İlk zardan sonra bu hakkınız yanar ve buton pasifleşir.
Oyun, hamlelerinize duyarlıdır. Örneğin son hamleyi henüz yapmamışsanız, geri al butonunu kullanabilirsiniz; ancak son hamleyi yaptığınız anda sıranız yanar ve YZ zarını atar.
Oyun bittiğinde mars durumu olup olmadığı da denetlenerek, bir oyun bitti ekranı açılır; aynı anda yine kısa bir melodi duyarsınız. Oyun menüsünden skor listenizi görebilirsiniz. Skorlar, ~/.config/demlitavla/ içindeki json dosyasına kaydedilmektedir. İlk oyun tamamlanana kadar oluşturulmaz.
Repo:
ÖNEMLİ AYRINTILAR:
Bu program, insan emeği ve yapay zeka desteği ile tamamlanabilmiştir. Ben olmasaydım, YZ yapamazdı; YZ olmasaydı, ben yapamazdım. İçerikteki birçok mantık YZ tarafından kuruldu ve kodu yazıldı. YZ tamamen kör ve sağır. Bilerek hatalı kod veriyorum ve hata bulmasını istiyorum, gidip saçma sapan şeyleri hata diye gösteriyor. Bunu şu yüzden yazıyorum: “Ne yaptın ki? YZ’ye yap dedin yaptı”. Öyle birşey olmadı. İlk ikinci cümleyi tekrar okuyun.
Oyunu defalarca test ettim. Birçok kez oyun bitirdim. Bir sorunla karşılaşmadım. Ancak ben tavla konusunda “nerd” seviyede değilim. Ola ki bir sorunla karşılaşırsanız, lütfen bildirin.
Sorunsuz kurulabiliyor mu? Kurdunuz, çalışıyor mu? Çalıştı, çökmeden oyunu bitirebiliyor musunuz? Aksi takdirde bildirin.
Geliştirmeler için öneriye kapalıyım, özür dilerim. Program beni gerçekten yordu ve bu, belki yaptığım programlar içinde en zoruydu. İnanılmaz yoruldum ve bıktım. Hata varsa düzeltmek dışında artık daha fazla uğraşmak istemiyorum. Hele hele dil önerisi hiç olmaz, ana kod şu anda 970 satır ve dinamik dil desteği eklemek bu sayıyı hem ortalama 2 katına çıkarır, hem de bunu yapmak her kod satırında hata oluşma riskiyle savaş vermek demek. YZ ile bile bu yapılamaz.
Güzel bir oyun oldu. Deneme ya da boş zaman eğlencesi değil, ciddi ciddi üzerinde çalışılmış bir proje oldu. Umarım eğlenirsiniz.
İyi çalışmalar ve özgür yazılımlar dilerim.


