Advertisement
Guest User

Untitled

a guest
Mar 20th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 0.50 KB | None | 0 0
  1. let file = (square.0 & 0b0000_0111) as i8;
  2. let rank = (square.0 >> 3) as i8;
  3.  
  4. for &(i, j) in &[(-2, -1), (-2, 1), (-1, -2), (-1, 2),
  5.                     (1, -2), (1, 2), (2, -1), (2, 1)] {
  6.         if file + i < 0 || file + i >= 8 || rank + j < 0 || rank + j >= 8 {
  7.             continue;
  8.         }
  9.         let dest_square = Square(((rank + j) * 8 + file + i) as u8)
  10.         if board[dest_square].color() != Some(board.to_move) {
  11.                 add_if_legal(board, ChessMove::new(square, dest_square), moves);
  12.         }
  13. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement