Atölye › Satranç › 20/48. adım
Kale sıçramaz, kayar: dört düz yönden birinde, bir şey onu durdurana kadar istediği kadar gider. Bu yüzden sabit bir sıçrama listesi yetmez. Onun yerine yönleri yazacağız ve her yönde kare kare ilerleyeceğiz:
"Ne kadar süreceği belli olmayan tekrar" için for değil while döngüsü kullanırız.
```js
const STRAIGHT = [[1, 0], [-1, 0], [0, 1], [0, -1]]
if (kind === 'R') {
for (const [dr, dc] of STRAIGHT) {
let tr = r + dr
let tc = c + dc
while (inside(tr, tc)) {
if (board[tr][tc]) {
if (board[tr][tc][0] !== color) add(r, c, tr, tc)
break
}
add(r, c, tr, tc)
tr += dr
tc += dc
}
}
}
```const STRAIGHT = [...] → dört düz yön, her biri bir karelik adım: aşağı, yukarı, sağ, sol.let tr = r + dr → yönde ilk kare. const değil let, çünkü ilerledikçe değişecek.while (inside(tr, tc)) { → while döngüsü: koşul doğru olduğu sürece (kare tahtada olduğu sürece) içeriyi
tekrarlar.if (board[tr][tc]) { → karede bir taş var:if (board[tr][tc][0] !== color) add(...) → rakipse yeme hamlesi ekle.break → döngüden hemen çık: taşın arkasına geçilemez.add(r, c, tr, tc) → kare boştu: hamle ekle.tr += dr → += "üstüne ekle": bir kare daha ilerle. tc de aynı.const KING = ... satırının altına STRAIGHT satırını yaz.pseudoMoves içinde at/şah bloğu if (kind === 'N' || kind === 'K') { ... } kapandıktan hemen sonra (içteki
c döngüsünü kapatan }'den önce) kale bloğunu yaz. Girinti at bloğuyla aynı hizada olsun.Beceriler: Döngüler
← Sırayı yaz Filler ve vezirler →