From 29453fbb1481c0307a62c8d31a0c722332c2f6dc Mon Sep 17 00:00:00 2001 From: Karma Riuk Date: Sun, 2 Feb 2025 17:13:55 +0100 Subject: [PATCH] implemented some stuff --- .gitignore | 2 +- cpp/main | Bin 80528 -> 81224 bytes cpp/src/board.hpp | 7 +------ cpp/src/castle_side.hpp | 7 +++++++ cpp/src/move.hpp | 7 ++++++- cpp/src/pieces/piece.cpp | 19 +++++++++++++++++++ cpp/src/{ => pieces}/piece.hpp | 8 ++++++++ 7 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 cpp/src/castle_side.hpp create mode 100644 cpp/src/pieces/piece.cpp rename cpp/src/{ => pieces}/piece.hpp (63%) 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 986080ef05566b2330a67f95eabc8da09611b10a..b26353a3e02b9ff6da35f04d593679ad42e464a4 100755 GIT binary patch delta 17942 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Ν?Z7Xm7T4LQkr*Uyh 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 delta 16680 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 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);