Atölye › Satranç › 30/48. adım
Parçalar hazır, kural tek fonksiyon: bir hamle ancak oynandıktan sonra oynayanın şahı saldırı altında değilse
yasaldır. legalMoves() her desen hamlesini:
makeMove),inCheck),undoMove),Bu tek kural bir sürü satranç durumunu kendiliğinden çözer: açmazdaki taş yerinden oynayamaz, şah tehdit altına yürüyemez, şah çekilince yalnız onu kurtaran hamleler kalır.
```js
// The moves the side to play can really make: try each one, and keep it if its own king is not left in check.
function legalMoves() {
const color = turn
return pseudoMoves(color).filter((m) => {
const undo = makeMove(m)
const safe = !inCheck(color)
undoMove(undo)
return safe
})
}
targets = legalMoves().filter((m) => same(m.from, selected))
```const color = turn → oynayan rengi önceden sakla: makeMove sırayı değiştirecek, ama biz oynayanın şahına
bakmalıyız.pseudoMoves(color).filter((m) => { ... }) → her hamle için süslü parantez içini çalıştır; true dönenler
kalır.const safe = !inCheck(color) → hamleden sonra şahım saldırı altında değil mi?undoMove(undo) → tahtayı eski hâline getir. Oyuncu bunların hiçbirini görmez: hepsi bir sonraki çizimden önce
olup biter.clickSquare içinde pseudoMoves(turn) yerine legalMoves() → noktalar artık yalnız yasal hamleleri gösterir.function play(m) { satırının üstüne yorum satırını ve legalMoves fonksiyonunu yaz; altında bir boş satır
kalsın.clickSquare içinde pseudoMoves(turn) yazan yeri legalMoves() yap.Beceriler: Oyun durumları, Fonksiyonlar
← Hamleyi geri al Rok hamleleri →