Atölye › Satranç › 37/48. adım
Yasal hamleler hazır olunca oyunun sonu neredeyse bedava gelir. Her hamleden sonra tek bir soru: sırası gelen tarafın hiç yasal hamlesi var mı?
Sonucu state (durum) değişkeninde tutacağız: 'playing' (oynanıyor), 'checkmate' (mat) ya da 'stalemate' (pat).
```js
let state // 'playing', 'checkmate' or 'stalemate'
state = 'playing'
function play(m) {
makeMove(m)
selected = null
targets = []
if (legalMoves().length === 0) state = inCheck(turn) ? 'checkmate' : 'stalemate'
}
```let state → oyunun durumu. reset onu 'playing' yapar.legalMoves().length === 0 → length bir listenin eleman sayısı. 0 ise sırası gelenin hiç yasal hamlesi yok.makeMove'dan sonra turn zaten öbür tarafı gösteriyor; yani soruyu cevap verecek tarafa soruyoruz.inCheck(turn) ? 'checkmate' : 'stalemate' → şahı saldırı altındaysa mat, değilse pat.let targets ... satırının altına let state ... satırını yaz.reset içinde targets = [] satırının altına state = 'playing' yaz.play fonksiyonunun sonuna, targets = [] satırının altına if satırını yaz.Beceriler: Oyun durumları
← Geçerken alma Şah! ve sonuç →