diff options
| author | Adam <adammegarules1@gmail.com> | 2026-08-11 13:20:32 +0200 |
|---|---|---|
| committer | Adam <adammegarules1@gmail.com> | 2026-08-11 13:20:32 +0200 |
| commit | 8afc1355db1e78d1f4c4d13071d23f43efe1f20d (patch) | |
| tree | bd301f944b8b069bbe749d3224a91d52a11deb72 /src/moves.cpp | |
| parent | e10aa25f4246c1d570767404ddb2e5fe826c3050 (diff) | |
improving knight move gen code
Diffstat (limited to 'src/moves.cpp')
| -rw-r--r-- | src/moves.cpp | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/src/moves.cpp b/src/moves.cpp index 3cdeafa..a236536 100644 --- a/src/moves.cpp +++ b/src/moves.cpp @@ -13,23 +13,23 @@ constexpr std::array<std::uint64_t, 64> computeKnightAttacks() { std::array<std::uint64_t, 64> attacks{}; - for (int sq = 0; sq < 64; ++sq) { - const int f = sq % 8; // file (0=a, 7=h) - const int r = sq / 8; // rank (0=1, 7=8) - std::uint64_t bb = 0; - - // {df, dr} for all 8 knight leaps - const int leaps[8][2] = {{1, 2}, {2, 1}, {2, -1}, {1, -2}, - {-1, -2}, {-2, -1}, {-2, 1}, {-1, 2}}; - - for (int i = 0; i < 8; ++i) { - const int nf = f + leaps[i][0]; - const int nr = r + leaps[i][1]; - if (nf >= 0 && nf < 8 && nr >= 0 && nr < 8) { - bb |= 1ULL << (nr * 8 + nf); + constexpr std::array<int, 8> knight_moves{-10, 6, 15, 17, 10, -6, -15, -17}; + + for (int i = 0; i < 64; i++) { + uint64_t bb = 0; + for (int offset : knight_moves) { + int next = i + offset; + if (next >= 64 || next < 0) { + continue; } + const int fileDelta = (next % 8) - (i % 8); + if (fileDelta != 1 && fileDelta != 2 && fileDelta != -1 && + fileDelta != -2) { + continue; + }; + bb |= 1ULL << next; } - attacks[static_cast<size_t>(sq)] = bb; + attacks[static_cast<size_t>(i)] = bb; } return attacks; } @@ -38,6 +38,7 @@ constexpr std::array<std::uint64_t, 64> KNIGHT_ATTACKS = computeKnightAttacks(); static void GenerateKnightMoves(Game *b, std::vector<Move> &moves, bool GenerateQuietMoves) { + uint64_t knights = b->PieceBitboards[b->turn][KNIGHT]; while (knights != 0) { int from = __builtin_ctzll(knights); |
