Workshop › Chess › Step 31 of 48

Castling moves

What we are doing

Castling moves the king two squares towards a rook. It needs history the board cannot show (has the king or that rook ever moved?), so castling keeps four flags: wK, wQ, bK, bQ (king side and queen side for each color). A king on its first square gets a castling move when the flag is on, the squares between are empty and the rook is in its corner.

```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' })
      }
```

What it means

Your turn

  1. Under let turn ... write let castling ...; in reset, under turn = 'w' write the flags.
  2. In pseudoMoves, under the pawn block (after its closing }), write the castling block.

Skills: Game states

All steps

  1. A dark table
  2. One row of squares
  3. All 64 squares
  4. The starting position as text
  5. Color and kind
  6. Draw the pieces
  7. An outline for white
  8. Draw again and again
  9. The knight's jumps as data
  10. A list of moves
  11. The king steps too
  12. Which square was clicked?
  13. Light up the selected square
  14. Whose turn is it?
  15. Where can it go?
  16. Show the targets
  17. Play a move
  18. Click a dot to move
  19. Say whose turn it is
  20. The rook slides
  21. Bishops and queens
  22. Pawns step forward
  23. Pawns capture diagonally
  24. A pawn becomes a queen
  25. Is a square attacked?
  26. Attacks from far away
  27. Is the king in check?
  28. A move that remembers
  29. Take a move back
  30. Only legal moves
  31. Castling moves
  32. The rook jumps over
  33. Losing the right to castle
  34. No castling through check
  35. Remember the double step
  36. En passant
  37. Checkmate and stalemate
  38. Check! and the result
  39. Click to play again
  40. Show the last move
  41. A score for a position
  42. Thinking ahead
  43. Pick the best move
  44. Alpha-beta: skip what cannot matter
  45. Try the best-looking moves first
  46. The computer plays black
  47. You are white
  48. Build it yourself: the fifty-move rule