Xiangiqgame
AI engine for Xiangqi
Loading...
Searching...
No Matches
game_runner.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <any>
4#include <csignal>
5#include <functional>
6#include <game/game.hpp>
9#include <iostream>
10// #include <game/player_spec_builder.hpp>
11#include <string>
12#include <unordered_map>
13
14namespace game {
15
19
20public:
24
26
28 auto game = game_factory.Create();
29
30 // Register signal handlers
31 RegisterSignalHandlers([&game](int signal) {
32 if (game) {
33 game->RequestStop(signal);
34 }
35});
36
37 auto game_summary = game->Play();
38
39 return game_summary;
40 }
41
44
45private:
46 void RegisterSignalHandlers(std::function<void(int)> stop_callback) {
47 static std::function<void(int)> stop_handler = stop_callback;
48
49 std::signal(SIGINT, [](int sig) {
50 if (stop_handler) {
51 stop_handler(sig);
52 }
53 });
54
55 std::signal(SIGTERM, [](int sig) {
56 if (stop_handler) {
57 stop_handler(sig);
58 }
59 });
60 }
61};
62} // namespace game
GameSummary RunGame()
Definition: game_runner.hpp:25
const game::PlayerSpec & red_player_spec()
Definition: game_runner.hpp:42
void RegisterSignalHandlers(std::function< void(int)> stop_callback)
Definition: game_runner.hpp:46
GameRunner(game::PlayerSpec red_player_spec, game::PlayerSpec black_player_spec)
Definition: game_runner.hpp:21
game::PlayerSpec red_player_spec_
Definition: game_runner.hpp:17
const game::PlayerSpec & black_player_spec()
Definition: game_runner.hpp:43
game::PlayerSpec black_player_spec_
Definition: game_runner.hpp:18
Definition: game.hpp:19