Atölye › Satranç › 31/48. adım

Rok hamleleri

Ne yapıyoruz

Rok, şahı kaleye doğru iki kare götürüp kaleyi de şahın öbür yanına atlatan özel bir hamle. Yalnız şah ve o kale hiç oynamamışsa yapılabilir.

"Hiç oynamadı mı?" sorusunun cevabı tahtada görünmez; bu bir geçmiş bilgisi. O yüzden dört bayrak tutacağız: castling = { wK, wQ, bK, bQ }. wK beyazın şah tarafı (kısa rok), wQ vezir tarafı (uzun rok); siyah için aynısı. Hepsi başta true.

Bu adımda yalnız rok hamlelerini listeye ekliyoruz: şah kendi başlangıç karesinde, bayrak açık, aradaki kareler boş ve kale köşesinde. Kaleyi taşımayı bir sonraki adımda yapacağız.

```js
let castling // which castlings are still allowed

  castling = { wK: true, wQ: true, bK: true, bQ: true }

      // Castling: the king still on its first square, the squares between free and the rook in its corner.
      if (kind === 'K' && c === 4 && r === (color === 'w' ? 7 : 0)) {
        const rook = color + 'R'
        if (castling[color + 'K'] && !board[r][5] && !board[r][6] && board[r][7] === rook) add(r, c, r, 6, { castle: 'K' })
        if (castling[color + 'Q'] && !board[r][1] && !board[r][2] && !board[r][3] && board[r][0] === rook) add(r, c, r, 2, { castle: 'Q' })
      }
```

Ne işe yarıyor

Sıra sende

  1. let turn ... satırının altına let castling ... satırını yaz.
  2. reset içinde turn = 'w' satırının altına castling = { ... } satırını yaz.
  3. pseudoMoves içinde piyon bloğu kapandıktan hemen sonra (aynı hizada) yorum satırını ve rok bloğunu yaz.
  4. Çalıştır. Denemek için: e4, e5, Af3, Af6, Fc4, Fc5 oyna, sonra beyaz şaha tıkla: g1'de bir nokta görmelisin. (Kale henüz yerinden kıpırdamıyor.)

Beceriler: Oyun durumları

Tüm adımlar

  1. Koyu bir masa
  2. Bir sıra kare
  3. 64 karenin hepsi
  4. Metin olarak başlangıç dizilişi
  5. Renk ve tür
  6. Taşları çiz
  7. Beyaza bir dış çizgi
  8. Tekrar tekrar çiz
  9. Atın sıçramaları veri olarak
  10. Bir hamle listesi
  11. Şah da adım atar
  12. Hangi kareye tıklandı?
  13. Seçili kareyi yak
  14. Sıra kimde?
  15. Nereye gidebilir?
  16. Hedefleri göster
  17. Hamleyi oyna
  18. Noktaya tıkla, oyna
  19. Sırayı yaz
  20. Kale kayar
  21. Filler ve vezirler
  22. Piyonlar ileri yürür
  23. Piyon çapraz yer
  24. Piyon vezir olur
  25. Kare saldırı altında mı?
  26. Uzaktan saldırılar
  27. Şah tehdit altında mı?
  28. Hatırlayan hamle
  29. Hamleyi geri al
  30. Yalnız yasal hamleler
  31. Rok hamleleri
  32. Kale üstünden atlar
  33. Rok hakkını kaybetmek
  34. Tehditten geçerek rok yok
  35. Çift adımı hatırla
  36. Geçerken alma
  37. Mat ve pat
  38. Şah! ve sonuç
  39. Yeniden oynamak için tıkla
  40. Son hamleyi göster
  41. Pozisyona bir puan
  42. İleriyi düşünmek
  43. En iyi hamleyi seç
  44. Alfa-beta: önemsizi atla
  45. Önce iyi görünen hamleler
  46. Siyahı bilgisayar oynar
  47. Sen beyazsın
  48. Kendin yap: elli hamle kuralı