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 0000000..be82218 Binary files /dev/null and b/cpp/board.o differ diff --git a/cpp/main b/cpp/main new file mode 100755 index 0000000..46f6bdb Binary files /dev/null and b/cpp/main differ diff --git a/cpp/main.cpp b/cpp/main.cpp index d603fc6..41af89f 100644 --- a/cpp/main.cpp +++ b/cpp/main.cpp @@ -1,4 +1,4 @@ -#include "board.cpp" +#include "board.hpp" #include @@ -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 0000000..08584d8 Binary files /dev/null and b/cpp/main.o differ diff --git a/cpp/piece.hpp b/cpp/piece.hpp new file mode 100644 index 0000000..48f58cb --- /dev/null +++ b/cpp/piece.hpp @@ -0,0 +1,14 @@ +enum Piece { + None = 0, + King = 1, + Pawn = 2, + Knigt = 3, + Bishop = 4, + Rook = 5, + Queen = 6, +}; + +enum Colour { + White = 8, + Black = 16, +}; diff --git a/cpp/stickfosh b/cpp/stickfosh new file mode 100755 index 0000000..4f559a5 Binary files /dev/null and b/cpp/stickfosh differ 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