예제 소스
바둑 on-policy 학습: 대국 로그를 KataGo 라벨로 바꾸기 · 파일 169개
aiplayer.h
#pragma once
#include "goboard.h"
#include <QPoint>
namespace AiPlayer {
/// 결과: 둘 좌표. row<0 또는 col<0 이면 패스 권고.
struct MoveSuggestion {
int row = -1;
int col = -1;
bool pass = false;
/// 모든 합법수가 자해(자충수/자기 집 메우기/자기 단수)인 종반 상황.
/// MainWindow 는 이 신호를 받으면 더 두지 않고 자동 계가 모드로 진입한다.
/// (AI 는 자발적으로 패스/기권하지 않으나, 둘 가치 있는 자리가 없는 종반엔
/// 계속 자충수를 두지 않고 게임을 마치는 것이 옳다.)
bool noGoodMove = false;
int bestScore = 0; ///< 디버그/판정용 최고 후보 점수
};
/// 단순 휴리스틱: 합법수 중 (a) 따낼 수, (b) 위협 받는 자기 그룹 살리기,
/// (c) 자기 그룹 활로 늘리기 + 상대 그룹 활로 줄이기 + 중앙 가중치 로 가장 좋은 점.
/// 합법수가 없거나 모두 자기 영역만 줄이는 작은 점이면 패스.
MoveSuggestion suggestMove(const GoBoard &board, Stone aiColor);
} // namespace AiPlayer