diff --git a/.gitignore b/.gitignore index 1800114..0a19790 100644 --- a/.gitignore +++ b/.gitignore @@ -171,4 +171,4 @@ cython_debug/ .ruff_cache/ # PyPI configuration file -.pypirc \ No newline at end of file +.pypirc diff --git a/cpp/main b/cpp/main index 986080e..b26353a 100755 Binary files a/cpp/main and b/cpp/main differ diff --git a/cpp/src/board.hpp b/cpp/src/board.hpp index eafe182..923a712 100644 --- a/cpp/src/board.hpp +++ b/cpp/src/board.hpp @@ -1,14 +1,9 @@ #pragma once -#include "piece.hpp" +#include "pieces/piece.hpp" #include -enum CastleRights : int8_t { - KingSide = 1, - QueenSide = 2, -}; - class Board { private: int8_t squares[64] = {Piece::None}; diff --git a/cpp/src/castle_side.hpp b/cpp/src/castle_side.hpp new file mode 100644 index 0000000..5a51b80 --- /dev/null +++ b/cpp/src/castle_side.hpp @@ -0,0 +1,7 @@ +#include + +enum class CastleSide : int8_t { + Neither = 0, + King = 1, + Queen = 2, +}; diff --git a/cpp/src/move.hpp b/cpp/src/move.hpp index b5acc18..b465e98 100644 --- a/cpp/src/move.hpp +++ b/cpp/src/move.hpp @@ -1,6 +1,11 @@ +#include "castle_side.hpp" + #include struct Move { - int8_t start_square; + int8_t piece; int8_t target_square; + + bool is_capturing = false; + CastleSide castle_side = CastleSide::Neither; }; diff --git a/cpp/src/pieces/piece.cpp b/cpp/src/pieces/piece.cpp new file mode 100644 index 0000000..f06f4ff --- /dev/null +++ b/cpp/src/pieces/piece.cpp @@ -0,0 +1,19 @@ +#include "piece.hpp" + +#include "../board.hpp" + +std::vector pawn_moves(Board b) { + return {}; +} + +std::vector legal_moves(Piece p, Board b) { + switch (p) { + case Piece::Pawn: + return pawn_moves(b); + case Piece::Bishop: + break; + default: + break; + } + return {}; +} diff --git a/cpp/src/piece.hpp b/cpp/src/pieces/piece.hpp similarity index 63% rename from cpp/src/piece.hpp rename to cpp/src/pieces/piece.hpp index 4631099..955e39e 100644 --- a/cpp/src/piece.hpp +++ b/cpp/src/pieces/piece.hpp @@ -1,4 +1,9 @@ +#pragma once + +#include "../move.hpp" + #include +#include enum Piece : int8_t { None = 0, @@ -14,3 +19,6 @@ enum Colour : int8_t { White = 8, Black = 16, }; + +class Board; +std::vector legal_moves(Piece p, Board b);