08ce3787df
Check kings' position in 'ChessBoard::is_valid'
2024-04-01 22:20:39 +01:00
6976c60fe6
Add 'TryInto<Square>' for 'Bitboard'
2024-04-01 22:20:39 +01:00
bc67ee3e9a
Test 'ChessBoard::{do,undo}_move' machinery
2024-04-01 22:20:39 +01:00
c1419f0e44
Add FEN board parsing
...
Unfortunately, given that I *don't* want to expose all the `ChessBoard`
fields to the rest of the crate, this implementation will have to live
alongside its module instead of inside `crate::fen`...
2024-04-01 22:20:39 +01:00
3cd2601f07
Add 'ChessBoard::is_valid'
2024-04-01 22:20:39 +01:00
c112ddc4cd
Implement 'Default' for 'ChessBoard'
2024-04-01 22:20:39 +01:00
ce3ebf05ee
Add 'ChessBoard::{,un}do_move'
2024-04-01 22:20:39 +01:00
d44461e35c
Add 'ChessBoard'
2024-04-01 22:20:39 +01:00
4d69d34fa0
Add 'Move'
2024-04-01 22:20:39 +01:00
0b9318cdf3
Add 'Bitboard::has_more_than_one'
2024-04-01 22:20:39 +01:00
e673e20a63
Add 'Color::third_rank'
2024-04-01 22:20:39 +01:00
0cc1fcf912
Add 'CastleRights::with_{king,queen}_side'
2024-04-01 22:20:39 +01:00
072a1ea13c
Add '*Assign' operators to 'Bitboard'
2024-04-01 22:20:39 +01:00
3b1735da79
Add 'BitboardIterator::new'
2024-04-01 22:20:39 +01:00
bd9238d686
Add 'Color::iter'
2024-04-01 22:20:39 +01:00
bed7ec3be2
Remove spurious links in 'Square' documentation
2024-04-01 22:20:39 +01:00
4491e5be00
Remove spurious links in 'Bitboard' documentation
2024-04-01 22:20:39 +01:00
8d03242e83
Add 'Bitboard::iter_powerset'
2024-04-01 22:20:39 +01:00
a3a9f64213
Add 'Piece' enum
2024-04-01 22:20:39 +01:00
d919b956ed
Add 'NUM_VARIANTS' constant to all 'board' enums
2024-04-01 22:20:39 +01:00
407f85c19b
Consistently use 'Self' type in 'impl' blocks
2024-04-01 22:20:39 +01:00
b68dd132e8
Fix typo in 'board::Color' documentation
2024-04-01 22:20:39 +01:00
2c1142324c
Add 'Color::slide_board_with_blockers'
2024-04-01 22:20:39 +01:00
0315e2fb51
Improve 'board::BitboardIterator'
...
* Accurate 'size_hint'.
* Exact size.
* Fused iterator (keeps returning 'None' after returning 'None' once).
2024-04-01 22:20:39 +01:00
f3a83065da
Add 'Color::{forward,backward}_direction'
2024-04-01 22:20:39 +01:00
0812d916ff
Add 'CastleRights::unmoved_rooks'
2024-04-01 22:20:39 +01:00
e84ec552fe
Add 'CastleRights::without_{king,queen}_side'
2024-04-01 22:20:39 +01:00
a21841c0ad
Add 'CastleRights::has_{king,queen}_side'
2024-04-01 22:20:39 +01:00
88e74d5fff
Add 'CastleRights' enum
2024-04-01 22:20:39 +01:00
f351f056a9
Add 'Color' enum
2024-04-01 22:20:39 +01:00
042f5dbc4d
Rename 'board::direction{s,}'
2024-04-01 22:20:39 +01:00
585c127381
Statically assert zero-cost invariants
...
Since some or all of those invariants will come in handy to ensure we
use as little memory as possible, to maximize the speed of the move
generation later on.
2024-04-01 22:20:39 +01:00
643b688384
Add 'Bitboard::{LIGHT,DARK}_SQUARES
2024-04-01 22:20:39 +01:00
659e3f1c9a
Make use of 'Bitboard::is_empty'
2024-04-01 22:20:39 +01:00
f66b0276d8
Add 'Bitboard::is_empty'
2024-04-01 22:20:39 +01:00
9ef600c1bb
Add 'Direction::slide_{square,board}'
2024-04-01 22:20:39 +01:00
dc974ec0e9
Add 'Bitboard::{ANTI_,}DIAGONAL'
2024-04-01 22:20:39 +01:00
251c10cbc7
Add 'Direction::move_square'
2024-04-01 22:20:39 +01:00
1ab024fce8
Add 'Direction::iter_{rook,bishop,royalty,knight}'
2024-04-01 22:20:39 +01:00
924689ec02
Add 'Direction::move_board'
...
Encapsulates the way to move a piece on a board, avoiding the need to
mask and shift by hand.
2024-04-01 22:20:39 +01:00
b840bfc570
Add 'board::Direction' enum
2024-04-01 22:20:39 +01:00
c177d13b75
Use 'Square::index' in 'Square::{file,rank}_index'
2024-04-01 22:20:39 +01:00
281c79556a
Add 'Square::index'
2024-04-01 22:20:39 +01:00
8261b0c06b
Add 'Bitboard::count'
2024-04-01 22:20:39 +01:00
7a7e7f3665
Add 'Rank::{up,down}'
2024-04-01 22:20:39 +01:00
2b4797ec47
Add 'File::{left,right}'
2024-04-01 22:20:39 +01:00
6501466d3e
Add 'Square' constructor from 'File', 'Rank'
2024-04-01 22:20:39 +01:00
c3c3684150
Don't return 'Bitboard' from 'Square::{file,rank}'
2024-04-01 22:20:39 +01:00
ef15da41ea
Add 'File' enum
2024-04-01 22:20:39 +01:00
54d7f0d69f
Add 'Rank' enum
2024-04-01 22:20:39 +01:00