From 85a5bfa328624a61056c6eccef064d4107d85809 Mon Sep 17 00:00:00 2001 From: Karma Riuk Date: Sun, 2 Feb 2025 15:15:14 +0100 Subject: [PATCH] moved some stuff around --- cpp/Makefile | 32 ++++++++++++++++++++++++++++++ cpp/board.cpp | 35 ++------------------------------- cpp/board.hpp | 22 +++++++++++++++++++++ cpp/board.o | Bin 0 -> 14232 bytes cpp/main | Bin 0 -> 80384 bytes cpp/main.cpp | 6 +++++- cpp/main.o | Bin 0 -> 6216 bytes cpp/piece.hpp | 14 +++++++++++++ cpp/stickfosh | Bin 0 -> 27528 bytes cpp/tests/fen.cpp | 2 +- cpp/tests/{lib.cpp => lib.hpp} | 0 11 files changed, 76 insertions(+), 35 deletions(-) create mode 100644 cpp/Makefile create mode 100644 cpp/board.hpp create mode 100644 cpp/board.o create mode 100755 cpp/main create mode 100644 cpp/main.o create mode 100644 cpp/piece.hpp create mode 100755 cpp/stickfosh rename cpp/tests/{lib.cpp => lib.hpp} (100%) diff --git a/cpp/Makefile b/cpp/Makefile new file mode 100644 index 0000000..5dc0728 --- /dev/null +++ b/cpp/Makefile @@ -0,0 +1,32 @@ +# Compiler flags (add -O2 for optimization, -g for debugging, etc.) +CXXFLAGS = -Wall -O3 + +# Name of the final executable +TARGET = stickfosh + +# List of source files +SRCS = main.cpp board.cpp + +# Automatically generate object file names from source file names +OBJS = $(SRCS:.cpp=.o) + +# Default rule: build the target executable +all: $(TARGET) + +# Link the object files into the final executable +$(TARGET): $(OBJS) + $(CXX) $(CXXFLAGS) -o $(TARGET) $(OBJS) + +# Pattern rule: compile each .cpp file to a .o file +%.o: %.cpp %.hpp + $(CXX) $(CXXFLAGS) -c $< -o $@ + +main.o: board.o +stickfosh: main.o board.o + +# Clean rule to remove built files +clean: + rm -f $(TARGET) $(OBJS) + +# Optional: a rule to rebuild everything from scratch +rebuild: clean all diff --git a/cpp/board.cpp b/cpp/board.cpp index 1f26874..332d741 100644 --- a/cpp/board.cpp +++ b/cpp/board.cpp @@ -1,38 +1,7 @@ +#include "board.hpp" + #include #include -#include - -enum Piece { - None = 0, - King = 1, - Pawn = 2, - Knigt = 3, - Bishop = 4, - Rook = 5, - Queen = 6, -}; - -enum Colour { - White = 8, - Black = 16, -}; - -enum CastleRights { - KingSide = 1, - QueenSide = 2, -}; - -class Board { - private: - int squares[64] = {Piece::None}; - Colour turn; - int castle_rights; - - public: - static Board* setup_fen_position(std::string fen); - - std::string to_fen(); -}; Board* Board::setup_fen_position(std::string fen) { Board* board = new Board(); diff --git a/cpp/board.hpp b/cpp/board.hpp new file mode 100644 index 0000000..cf93651 --- /dev/null +++ b/cpp/board.hpp @@ -0,0 +1,22 @@ +#pragma once + +#include "piece.hpp" + +#include + +enum CastleRights { + KingSide = 1, + QueenSide = 2, +}; + +class Board { + private: + int8_t squares[64] = {Piece::None}; + Colour turn; + int8_t castle_rights; + + public: + static Board* setup_fen_position(std::string fen); + + std::string to_fen(); +}; diff --git a/cpp/board.o b/cpp/board.o new file mode 100644 index 0000000000000000000000000000000000000000..be82218ba1c8b6087d66c5edc0f1b360e822c978 GIT binary patch literal 14232 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 literal 0 HcmV?d00001 diff --git a/cpp/main b/cpp/main new file mode 100755 index 0000000000000000000000000000000000000000..46f6bdb52e36cec0658d5ea5e38ebdfecdbb6837 GIT binary patch literal 80384 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 @@ -7,6 +7,10 @@ int main(int argc, char* argv[]) { "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 1 8"; Board* b = Board::setup_fen_position(pos); + std::cout << sizeof(Board) << std::endl; + std::cout << sizeof(int8_t[64]) << std::endl; + std::cout << sizeof(Colour) << std::endl; + std::string fen = b->to_fen(); std::cout << pos << std::endl; diff --git a/cpp/main.o b/cpp/main.o new file mode 100644 index 0000000000000000000000000000000000000000..08584d8cc5996dfed3e26e26415dab39348b2dd7 GIT binary patch literal 6216 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 G^1lHX)Fjsc literal 0 HcmV?d00001 diff --git a/cpp/tests/fen.cpp b/cpp/tests/fen.cpp index 17f41e3..a946ad2 100644 --- a/cpp/tests/fen.cpp +++ b/cpp/tests/fen.cpp @@ -1,5 +1,5 @@ #include "../board.cpp" -#include "lib.cpp" +#include "lib.hpp" int main() { std::string pos = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR"; diff --git a/cpp/tests/lib.cpp b/cpp/tests/lib.hpp similarity index 100% rename from cpp/tests/lib.cpp rename to cpp/tests/lib.hpp