made AIs aware what colour they were playing

This commit is contained in:
Karma Riuk 2025-02-06 22:56:41 +01:00
parent d6aa977a15
commit dc6631f79c
4 changed files with 16 additions and 17 deletions

View File

@ -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;
}

View File

@ -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<bool> 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

View File

@ -2,7 +2,7 @@
#include <thread>
Move ai::v0_random::_search(const Board& b, bool) {
Move ai::v0_random::_search(const Board& b) {
std::vector<Move> moves = b.all_legal_moves();
return moves[rand() % moves.size()];

View File

@ -7,7 +7,7 @@
static int INFINITY = std::numeric_limits<int>::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<Move> moves = b.all_legal_moves();