diff --git a/README.md b/README.md index c84eb50..772da33 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,25 @@ targets: - chessNoComputer: The user can play both sides in a GUI. Mainly added for testing the move generator. - findMagicNumber: finds Magic Numbers for the magic bitboard. +- moveGenTest: tests the move generator + +## Testing + +The target moveGenTest with its source in the test directory is a [perft](https://www.chessprogramming.org/Perft). +It works by counting the number of leaf nodes of the move generation with a +certain depth. The results where verified with [stockfish](https://stockfishchess.org/). + +## Implementation + +The engine is implemented using [bitboards](https://www.chessprogramming.org/Bitboards) +to store the position. A bitboard is an array of 64-Bit unsigned integers. The bitboard contains one +element per piece and square. Each Bit of the integer corresponds to one field +on the board, whether the piece stands there (1) or not (0). This allows use to +use bitwise operations to calculate information we need, really fast. + +The move generation of pseudo-legal moves (moves without considering whether the +king is in check) is mostly straightforward. We pre-generate some data in +`src/generateCode/moveConsts.c`, so that we can calculate the moves faster. # sources