[board] Implement a pawn move generator
Holy heck I went on a *journey* here. Ultimately, I needed to implement my own index-based iterator instead of using the Vec's Iterator. This type establishes some patterns I want to carry forward to other move generators. 1. The use of a Parameters struct to fully parameterize the move generation per-color. That lets these types only need a single color-based branch 2. A list of move lists, one list for each of captures, promotions, and quiet moves. 3. An index-based move iterator. 4. Separate impl for generating bitboard representations of these moves Additional changes: - Implement BitBoard::from_square() - Implement a Square::e5() for tests This class doesn't implement en passant yet. It also doesn't yet have tests for the bitboard stuff.
This commit is contained in:
parent
750b16970f
commit
af36b75df7
3 changed files with 300 additions and 70 deletions
|
@ -28,6 +28,10 @@ impl BitBoard {
|
|||
FILES[file]
|
||||
}
|
||||
|
||||
pub fn from_square(sq: Square) -> BitBoard {
|
||||
BitBoard(1 << sq.index())
|
||||
}
|
||||
|
||||
pub fn is_empty(&self) -> bool {
|
||||
self.0 == 0
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue