From dc6631f79c33c84a8bda651df1d593a206a98754 Mon Sep 17 00:00:00 2001 From: Karma Riuk Date: Thu, 6 Feb 2025 22:56:41 +0100 Subject: [PATCH] made AIs aware what colour they were playing --- cpp/src/main.cpp | 10 +++------- cpp/src/model/ais/ai.hpp | 19 +++++++++++-------- cpp/src/model/ais/v0_random.cpp | 2 +- cpp/src/model/ais/v1_simple.cpp | 2 +- 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/cpp/src/main.cpp b/cpp/src/main.cpp index 3472f77..ff3b6d3 100644 --- a/cpp/src/main.cpp +++ b/cpp/src/main.cpp @@ -2,6 +2,7 @@ #include "controller/controller.hpp" #include "controller/human_vs_ai.hpp" #include "controller/manual.hpp" +#include "model/perft/perft.hpp" #include "view/gui.hpp" #include "view/noop.hpp" #include "view/view.hpp" @@ -14,8 +15,8 @@ int main(int argc, char* argv[]) { Board b = Board::setup_fen_position(pos); - ai::v0_random p1(std::chrono::milliseconds(500)); - ai::v0_random p2(std::chrono::milliseconds(500)); + ai::v0_random p1(true, std::chrono::milliseconds(500)); + ai::v0_random p2(false, std::chrono::milliseconds(500)); GUI gui; AIvsAIController manual(b, gui, p1, p2); @@ -25,10 +26,5 @@ int main(int argc, char* argv[]) { controller.start(); // perft(); - // ai::v1_simple ai; - // - // Board b = Board::setup_fen_position(pos); - // Move move = ai.search(b, true); - // std::cout << move << std::endl; return 0; } diff --git a/cpp/src/model/ais/ai.hpp b/cpp/src/model/ais/ai.hpp index dfc9f07..b696d31 100644 --- a/cpp/src/model/ais/ai.hpp +++ b/cpp/src/model/ais/ai.hpp @@ -8,36 +8,39 @@ namespace ai { class AI { protected: + bool am_white; std::chrono::milliseconds thinking_time; - virtual Move _search(const Board&, bool = false) = 0; + virtual Move _search(const Board&) = 0; public: - AI(std::chrono::milliseconds tt): thinking_time(tt) {} + AI(bool am_white, std::chrono::milliseconds tt) + : am_white(am_white), + thinking_time(tt) {} std::atomic stop_computation = false; - Move search(const Board& b, bool am_white = false); + Move search(const Board& b); virtual int eval(const Board&) = 0; }; struct v0_random : public AI { - v0_random(std::chrono::milliseconds tt): AI(tt) {} + v0_random(bool w, std::chrono::milliseconds tt): AI(w, tt) {} - Move _search(const Board&, bool) override; + Move _search(const Board&) override; int eval(const Board&) override { return 0; }; }; - class v1_simple : public AI { + class v1_simple : public AI { // looks two moves ahead int _search(const Board&, int); public: - v1_simple(std::chrono::milliseconds tt): AI(tt) {} + v1_simple(bool w, std::chrono::milliseconds tt): AI(w, tt) {} - Move _search(const Board&, bool) override; + Move _search(const Board&) override; int eval(const Board&) override; }; } // namespace ai diff --git a/cpp/src/model/ais/v0_random.cpp b/cpp/src/model/ais/v0_random.cpp index d2c4d0a..b5eb071 100644 --- a/cpp/src/model/ais/v0_random.cpp +++ b/cpp/src/model/ais/v0_random.cpp @@ -2,7 +2,7 @@ #include -Move ai::v0_random::_search(const Board& b, bool) { +Move ai::v0_random::_search(const Board& b) { std::vector moves = b.all_legal_moves(); return moves[rand() % moves.size()]; diff --git a/cpp/src/model/ais/v1_simple.cpp b/cpp/src/model/ais/v1_simple.cpp index 63560da..99d1cb4 100644 --- a/cpp/src/model/ais/v1_simple.cpp +++ b/cpp/src/model/ais/v1_simple.cpp @@ -7,7 +7,7 @@ static int INFINITY = std::numeric_limits::max(); -Move ai::v1_simple::_search(const Board& b, bool am_white) { +Move ai::v1_simple::_search(const Board& b) { ThreadPool pool(std::thread::hardware_concurrency()); std::vector moves = b.all_legal_moves();