diff options
| author | Aargh Rai <aargh.rai+git@gmail.com> | 2026-06-01 13:25:24 +0530 |
|---|---|---|
| committer | Aargh Rai <aargh.rai+git@gmail.com> | 2026-06-01 13:25:24 +0530 |
| commit | d2af19a9ee217f55de12a303d9d6283c76fe446b (patch) | |
| tree | 299d98ee479b2d33bd6a580530a3309e0cd9f9e9 /src/engine | |
| parent | 29822a5d0f63bf0c1b34da636ddf27ecf22ca3cb (diff) | |
fixed knight + fixed comms
Diffstat (limited to 'src/engine')
| -rw-r--r-- | src/engine/moves/king.c | 82 | ||||
| -rw-r--r-- | src/engine/moves/knight.c | 72 |
2 files changed, 117 insertions, 37 deletions
diff --git a/src/engine/moves/king.c b/src/engine/moves/king.c index 9ce3eb8..29bca79 100644 --- a/src/engine/moves/king.c +++ b/src/engine/moves/king.c @@ -1,7 +1,8 @@ #include "../moves.h" +#include <stdio.h> void get_king_moves(moves_t* moves, position_t position) { - assert_valid_position(position); + // assert_valid_position(position); bitboard_t friendly_king; int king_square; @@ -34,3 +35,82 @@ void get_king_moves(moves_t* moves, position_t position) { add_move(moves, king_square, to); } } + +#ifdef TEST_MOD +#include <stdbool.h> +#include "vec.c" + +bool test_white_king_corners() { + moves_t moves = moves_init(); + position_t p = {0}; + p.bitboards[WHITE_KING] = 1; + p.turn = WHITE_TURN; + get_king_moves(&moves, p); + if (moves.length != 3) return false; + if (moves.moves[0].from != 0) return false; + if (moves.moves[0].to != 1) return false; + if (moves.moves[1].from != 0) return false; + if (moves.moves[1].to != 8) return false; + if (moves.moves[2].from != 0) return false; + if (moves.moves[2].to != 9) return false; + moves.length = 0; + p.bitboards[WHITE_KING] = 128; + get_king_moves(&moves, p); + if (moves.length != 3) return false; + if (moves.moves[0].from != 7) return false; + if (moves.moves[0].to != 6) return false; + if (moves.moves[1].from != 7) return false; + if (moves.moves[1].to != 14) return false; + if (moves.moves[2].from != 7) return false; + if (moves.moves[2].to != 15) return false; + moves.length = 0; + p.bitboards[WHITE_KING] = 72057594037927936ULL; + get_king_moves(&moves, p); + if (moves.length != 3) return false; + if (moves.moves[0].from != 56) return false; + if (moves.moves[0].to != 48) return false; + if (moves.moves[1].from != 56) return false; + if (moves.moves[1].to != 49) return false; + if (moves.moves[2].from != 56) return false; + if (moves.moves[2].to != 57) return false; + + return true; +} + +bool test_black_king_corners() { + moves_t moves = moves_init(); + position_t p = {0}; + p.bitboards[BLACK_KING] = 1; + p.turn = BLACK_TURN; + get_king_moves(&moves, p); + if (moves.length != 3) return false; + if (moves.moves[0].from != 0) return false; + if (moves.moves[0].to != 1) return false; + if (moves.moves[1].from != 0) return false; + if (moves.moves[1].to != 8) return false; + if (moves.moves[2].from != 0) return false; + if (moves.moves[2].to != 9) return false; + moves.length = 0; + p.bitboards[BLACK_KING] = 128; + get_king_moves(&moves, p); + if (moves.length != 3) return false; + if (moves.moves[0].from != 7) return false; + if (moves.moves[0].to != 6) return false; + if (moves.moves[1].from != 7) return false; + if (moves.moves[1].to != 14) return false; + if (moves.moves[2].from != 7) return false; + if (moves.moves[2].to != 15) return false; + moves.length = 0; + p.bitboards[BLACK_KING] = 72057594037927936ULL; + get_king_moves(&moves, p); + if (moves.length != 3) return false; + if (moves.moves[0].from != 56) return false; + if (moves.moves[0].to != 48) return false; + if (moves.moves[1].from != 56) return false; + if (moves.moves[1].to != 49) return false; + if (moves.moves[2].from != 56) return false; + if (moves.moves[2].to != 57) return false; + + return true; +} +#endif diff --git a/src/engine/moves/knight.c b/src/engine/moves/knight.c index c48b48e..5f5f9ad 100644 --- a/src/engine/moves/knight.c +++ b/src/engine/moves/knight.c @@ -4,63 +4,63 @@ bitboard_t knight_moves[64] = { 132096ULL, 329728ULL, 659712ULL, - 659712ULL >> 1, - 659712ULL >> 2, - 659712ULL >> 3, + 659712ULL << 1, + 659712ULL << 2, + 659712ULL << 3, 10489856ULL, 4202496ULL, 33816580ULL, 84410376ULL, 168886289ULL, - 168886289ULL >> 1, - 168886289ULL >> 2, - 168886289ULL >> 3, + 168886289ULL << 1, + 168886289ULL << 2, + 168886289ULL << 3, 2685403152ULL, 1075839008ULL, 8657044482ULL, 21609056261ULL, 43234889994ULL, - 43234889994ULL >> 1, - 43234889994ULL >> 2, - 43234889994ULL >> 3, + 43234889994ULL << 1, + 43234889994ULL << 2, + 43234889994ULL << 3, 687463207072ULL, 275414786112ULL, - 8657044482ULL >> 8, - 21609056261ULL >> 8, - 43234889994ULL >> 8, - 43234889994ULL >> (8 + 1), - 43234889994ULL >> (8 + 2), - 43234889994ULL >> (8 + 3), - 687463207072ULL >> 8, - 275414786112ULL >> 8, + 8657044482ULL << 8, + 21609056261ULL << 8, + 43234889994ULL << 8, + 43234889994ULL << (8 + 1), + 43234889994ULL << (8 + 2), + 43234889994ULL << (8 + 3), + 687463207072ULL << 8, + 275414786112ULL << 8, - 8657044482ULL >> 16, - 21609056261ULL >> 16, - 43234889994ULL >> 16, - 43234889994ULL >> (16 + 1), - 43234889994ULL >> (16 + 2), - 43234889994ULL >> (16 + 3), - 687463207072ULL >> 16, - 275414786112ULL >> 16, + 8657044482ULL << 16, + 21609056261ULL << 16, + 43234889994ULL << 16, + 43234889994ULL << (16 + 1), + 43234889994ULL << (16 + 2), + 43234889994ULL << (16 + 3), + 687463207072ULL << 16, + 275414786112ULL << 16, - 8657044482ULL >> 24, - 21609056261ULL >> 24, - 43234889994ULL >> 24, - 43234889994ULL >> (24 + 1), - 43234889994ULL >> (24 + 2), - 43234889994ULL >> (24 + 3), - 687463207072ULL >> 24, - 275414786112ULL >> 24, + 8657044482ULL << 24, + 21609056261ULL << 24, + 43234889994ULL << 24, + 43234889994ULL << (24 + 1), + 43234889994ULL << (24 + 2), + 43234889994ULL << (24 + 3), + 687463207072ULL << 24, + 275414786112ULL << 24, 288234782788157440ULL, 576469569871282176ULL, 1224997833292120064ULL, - 1224997833292120064ULL >> 1, - 1224997833292120064ULL >> 2, - 1224997833292120064ULL >> 3, + 1224997833292120064ULL << 1, + 1224997833292120064ULL << 2, + 1224997833292120064ULL << 3, 1152939783987658752ULL, 2305878468463689728ULL, |
