FEN NOTASYONU
Forsyth-Edwards Notasyonu, satranç
pozisyonlarını ASCII karakter seti kullanarak ifade etmeye yarayan
bir standarttır. Satranç programcıları için standart bir
pozisyon notasyonu çok önemlidir çünkü böylece pozisyon
veritabanlarını birbirleri ile paylaşabilirler. Satranç
motorlarının test edilmesinde bu veritabanları önemli yer tutar
ve yorucu veri girişi işlemlerinden kurtulmayı sağlar. [1]
FEN tanımlaması tek satırdan oluşur
ve 6 alandan ibarettir:
İlk alan, taşların yerleşimini
ifade eder. Taşların dizilimi 8. satırdan başlanarak gösterilir.
Beyaz taşlar için "PNBRQK" şeklinde büyük harfler
kullanılırken, siyah taşlar için küçük harfler kullanılır.
İkinci alan aktif rengi ifade
etmektedir. Eğer sıra beyazda ise "w" değerini alır.
Üçüncü alan rok yapma iznini
ifade eder. Eğer her iki taraf da rok yapamıyorsa "-"
değerini alır. Eğer beyaz, şah tarafına rok yapabiliyorsa "K",
vezir tarafına rok yapabiliyorsa "Q" değerini alır.
Dördüncü alan, en passant
hamlesi için hedef olan kareyi gösterir. Eğer herhangi bir en
passant hedef karesi yoksa "-" değerini alır.
Beşinci alan, yarım hamle
sayısını gösterir. Bu, elli hamle kuralı içerisinde beraberlik
oluşması açısından önemlidir.
Altıncı alan tam hamle sayısını
gösterir. Bu sayı, siyahlar hamle yaptığında arttırılmaktadır.
Satrançta başlangıç pozisyonunu
ifade eden FEN tanımı şu şekildedir:
rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR
w KQkq - 0 1
FEN notasyonu PGN (Portable Game
Notation) içerisindeki bir kısım olarak değerlendirilmektedir.
Modern satranç motorlarının hepsi bu standartları
desteklemektedir.
UCI PROTOKOLÜ
UCI spesifikasyonu işletim
sisteminden bağımsızdır. Satranç motoru Windows sistemlerinde
bir .exe dosyasıdır. Motor ile grafik arayüz arasındaki iletişim
standart giriş/çıkış yoluyla ve text komutları ile
yapılmaktadır. Motor hızlı bir biçimde boot ederek GUI
tarafından gönderilecek komutlara hazır olmalıdır. Motora
"isready" veya "setoption" komutları geldiğinde
içsel parametrelerini set etmelidir.
Motor, düşünürken bile standart
giriş kısmından gelen komutları işleyebilmelidir. Motor
kendisine bir "go" komutu gelmediği sürece hesaplamaya
başlamamalıdır. Motor belli bir pozisyonu hesaplamaya başlamadan
önce "position" komutunu almış olmalıdır. Varsayılan
durumda açılış kitabı GUI tarafından yönetilecektir. Motor,
kendisine anlamsız veya yanlış bir komut geldiğinde onu basitçe
yok sayacaktır. Hamlelerin ifade edilişi uzun cebirsel notasyon ile
olacaktır. [2]
Önemli UCI Komutları
GUI'den Motora:
uci
Motora UCI protokolünü kullanmasını söyle. Bu
komut program çalıştırıldığında bir kez gönderilecektir.
Komutu alan motor, kendisini tanıtarak "option" komutları
ile desteklediği ayarları bildirecektir. Daha sonra "uciok"
komutu ile protokolü desteklediğini bildirecektir, aksi halde
çalışması durdurulacaktır.
debug [ on | off ]
Debug modunu açmak ve kapamak için kullanılır.
Motor düşünürken bile debug modu değiştirilebilmelidir.
isready
Motorun yeni bir komutu işlemeye hazır olup
olmadığını anlamak ve GUI ile senkronize olmasını sağlamak
için kullanılır. "readyok" komutu ile cevaplanmaktadır.
position [fen | startpos ]
moves ....
Motor içsel olarak pozisyonu kurmalı
ve komuttaki hamleleri oynamalıdır. Pozisyon FEN notasyonundaki
gibi ya da başlangıç pozisyonunda olabilir.
go
"position" komutu ile
verilmiş olan pozisyonu hesaplamaya başla.
go searchmoves ....
Arama işlemini verilen hamleler ile
sınırla
go wtime
Beyazın x milisaniye düşünme
süresi kalmıştır.
go mate
x hamlede mat ara.
go ponder
Ponder moduna geçerek arama yap.
Burada motora GUI tarafından rakibin yapması tahmin edilen hamle
söylenmekte ve bunun üzerinden düşünmesi istenmektedir.
ponderhit
Rakip tahmin edilen hamleyi yapmıştır.
Motor normal arama moduna dönmelidir.
Motor'dan GUI'ye
Motor hesaplama işlemini tamamlamış
ve en iyi hamleyi bulmuştur.
Motor parametreleri açıklanır.
[1] Edwards,
S. J. "Portable game notation." (1994).
[2] Kahlen,
Stefan-Meyer, and Rudolf Huber. "Universal chess interface
(uci)." (2014).
Comments