#ifndef CHESSY_MINMAX_H #define CHESSY_MINIMAX_H #include "MoveGeneration.h" namespace chessy { class MiniMax; } class chessy::MiniMax { ChessGame& game; struct BestMove { Move move; float value; inline void overwriteIfBetter(BestMove other) { if (other.value > value) *this = other; } }; public: inline MiniMax(ChessGame& game) : game{ game } {} Move calculateBest(int depth) { minimax(depth); return {0, 0}; } template float evaluate(void) const; private: template float minimax(int depth); }; #endif // CHESSY_MINIMAX_H