Xiangiqgame
AI engine for Xiangqi
Loading...
Searching...
No Matches
game_factory.cpp
Go to the documentation of this file.
2
3namespace game {
4
6 const PlayerSpec &player_spec,
7 std::shared_ptr<gameboard::GameBoardForConcepts> game_board,
8 std::istream &input_stream
9)
10 : player_spec_{player_spec}
11 , game_board_{game_board}
12 , input_stream_{input_stream}
13 , minimax_factories_{} {
14 minimax_factories_.emplace(
16 std::make_shared<moveselection::MinimaxMoveEvaluatorFactory<uint32_t, 0>>(
18 player_spec.minimax_search_depth,
19 player_spec.zkeys_seed
20 )
21 );
22 minimax_factories_.emplace(
24 std::make_shared<moveselection::MinimaxMoveEvaluatorFactory<uint32_t, 0>>(
26 player_spec.minimax_search_depth,
27 player_spec.zkeys_seed
28 )
29 );
30 minimax_factories_.emplace(
32 std::make_shared<moveselection::MinimaxMoveEvaluatorFactory<__uint128_t, 0>>(
34 player_spec.minimax_search_depth,
35 player_spec.zkeys_seed
36 )
37 );
38 minimax_factories_.emplace(
40 std::make_shared<moveselection::MinimaxMoveEvaluatorFactory<uint32_t, 1>>(
42 player_spec.minimax_search_depth,
43 player_spec.zkeys_seed
44 )
45 );
46 minimax_factories_.emplace(
48 std::make_shared<moveselection::MinimaxMoveEvaluatorFactory<uint32_t, 1>>(
50 player_spec.minimax_search_depth,
51 player_spec.zkeys_seed
52 )
53 );
54 minimax_factories_.emplace(
56 std::make_shared<moveselection::MinimaxMoveEvaluatorFactory<__uint128_t, 0>>(
58 player_spec.minimax_search_depth,
59 player_spec.zkeys_seed
60 )
61 );
62}
63
64std::shared_ptr<MoveEvaluatorFactoryBase> EvaluatorFactoryRetriever::GetFactory() {
65 std::shared_ptr<MoveEvaluatorFactoryBase> factory;
66
68 factory = std::make_shared<moveselection::RandomMoveEvaluatorFactory>();
69 }
71 factory = std::make_shared<moveselection::HumanMoveEvaluatorFactory>(input_stream_);
72 }
74 MinimaxTypeInfo minimax_type_info{
77 // player_spec_.zobrist_key_type,
78 // player_spec_.zobrist_calculator_count
79 };
80 factory = minimax_factories_.at(minimax_type_info);
81 }
82 return factory;
83}
84
85} // namespace game
EvaluatorFactoryRetriever(const PlayerSpec &player_spec, std::shared_ptr< gameboard::GameBoardForConcepts > game_board, std::istream &input_stream=std::cin)
Definition: game_factory.cpp:5
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::shared_ptr< MoveEvaluatorFactoryBase > GetFactory()
Definition: game.hpp:19
EvaluatorType evaluator_type
DepthType minimax_search_depth