18#include <unordered_map>
25 std::shared_ptr<MoveEvaluatorFactoryBase>,
38 inline static const std::unordered_map<size_t, ZobristCalculatorCount>
48 std::shared_ptr<gameboard::GameBoardForConcepts> game_board,
49 std::istream &input_stream = std::cin
52 std::shared_ptr<MoveEvaluatorFactoryBase>
GetFactory();
67 std::istream &red_player_input_stream = std::cin,
68 std::istream &black_player_input_stream = std::cin,
69 bool report_during_game =
true
81 std::unordered_map<gameboard::PieceColor, PlayerSpec> player_specs;
85 std::unordered_map<gameboard::PieceColor, std::unique_ptr<MoveEvaluatorBase>>
88 auto evaluator_factory_retriever_red =
90 auto evalutor_factory_red = evaluator_factory_retriever_red.GetFactory();
96 auto evaluator_factory_retriever_black =
98 auto evalutor_factory_black = evaluator_factory_retriever_black.GetFactory();
104 std::shared_ptr<GameReporterInterface> game_reporter =
105 std::make_shared<terminalout::TerminalGameReporter>(
110 return std::make_unique<Game>(
113 std::move(evaluators),
static const std::unordered_map< size_t, ZobristCalculatorCount > num_zcalculators_to_enum_
std::shared_ptr< gameboard::GameBoardForConcepts > game_board_
std::unordered_map< MinimaxTypeInfo, std::shared_ptr< MoveEvaluatorFactoryBase >, MinimaxTypeInfoHash > minimax_factories_
const PlayerSpec & player_spec_
static const std::unordered_map< size_t, ZobristKeyType > zkey_bitcount_to_enum_
std::istream & input_stream_
std::shared_ptr< MoveEvaluatorFactoryBase > GetFactory()
PlayerSpec red_player_spec_
gameboard::GameBoardFactory game_board_factory_
std::istream & red_player_input_stream_
GameFactory(PlayerSpec red_player_spec, PlayerSpec black_player_spec, std::istream &red_player_input_stream=std::cin, std::istream &black_player_input_stream=std::cin, bool report_during_game=true)
std::istream & black_player_input_stream_
std::unique_ptr< Game > Create()
PlayerSpec black_player_spec_
std::shared_ptr< GameBoardForConcepts > Create(const BoardMapInt_t &starting_board=kStandardInitialBoard)
Tracking piece positions and determining legal moves.