İçeriğe geç
Yasir Uslu
Tüm işler

Türk usulü tavla, üç modda

Tavla

Tarayıcıda Türk usulü tavla. Bilgisayara karşı, aynı cihazda iki kişi ya da oda kodu ve davet bağlantısıyla çevrimiçi oynanır; maç 1, 3, 5 ya da 7 sayı üzerinden. Telefonda dikey ve yatay çalışır, ana ekrana uygulama olarak eklenir.

Durum
Canlıda
Araçlar
Next.js 16 · React 19 · TypeScript · Supabase Realtime · Web Crypto · PWA · Vitest · Playwright
Tavla ekran görüntüsü

Problem

Kahvehane tavlasının kendine özgü kuralları var: iki zar oynanabiliyorsa ikisi de oynanır, yalnız biri oynanabiliyorsa büyüğü; mars iki sayı, katlama küpü yok. Kuralları doğru uygulayan, hem bota hem çevrimiçi odaya aynı şekilde hizmet eden tek bir motor ve adil bir zar gerekiyordu.

Rolüm

Tek geliştirici: kural motoru, bot, çevrimiçi oda, arayüz, ses ve testler.

Yaklaşım

  1. 01

    Saf kural motoru

    Tahta, hamleler ve maç durumu saf fonksiyonlarla işlenir; yasal hamle dizileri “iki zar da oynanmalı, olmuyorsa büyüğü” kuralına göre üretilir. Arayüz, bot ve çevrimiçi oda aynı motoru kullanır; kurallar birim testleriyle doğrulanır.

  2. 02

    Adil zar

    Zar Web Crypto ile atılır; 6’nın katına sığmayan değerler atıldığı için her yüzün olasılığı eşittir. Çevrimiçi oyunda zarı yalnız oda kurucusunun tarayıcısı atar.

  3. 03

    Tavla bilen bot

    Bot zarla varılabilecek bütün konumları puanlar: pip farkı, açıkta kalan pullar ve rakibin onlara isabet ihtimali (36 zar birleşiminden), kapatılan haneler, art arda kapılar ve kırma. Temas bitince yalnız hızlı toplamaya bakar.

  4. 04

    Sunucusuz çevrimiçi oda

    Oda kurucusu oyunun tek yetkilisidir: zarı atar, hamleyi kurala ve sıraya göre uygular, durumu Supabase Realtime ile yayınlar. Misafir yalnız istek gönderir. Tavlada gizli bilgi olmadığı için şifreleme gerekmez; davet bağlantısı oda kodunu doldurur.

Zorlu an

Aynı hamle iki kez uygulanmasın

Misafirin hamlesi kurucuya ulaşmazsa, onay gelene kadar yeniden gönderilir. Zayıf bağlantıda eski gönderim de geç ulaşınca aynı hamle iki kez uygulanabiliyordu. Her isteğe kimlik verildi; kurucu oyuncu başına son 20 isteğin kimliğini tutar ve aynı kimliği ikinci kez uygulamaz.

Kalite

Kural motoru ve oda kuralları Vitest ile; bilgisayara karşı oyun, davet bağlantısı ve aynı cihaz modu Playwright ile telefonda ve masaüstünde test edilir.