6.1 定石関連関数の定義 |
本章では定石の導入を行ないます。
定石とは序盤での決まった打ち方を言います。
最善と考えられている手順もありますし、そうでない手順もあります。
コンピュータリバーシで定石を導入することの利点はいくつかあります。
本解説では主に3番目を理由として定石の導入を行ないます。
最初に定石関連の関数を定義します。
"opening.h"に定義してあります。
定石クラスの生成を行ないます。
引数 なし
戻り値 生成した定石クラスへのポインタ。生成に失敗した場合にはNULLを返します。
定石クラスの破棄を行ないます。
引数
self : Openingクラスへのポインタ
戻り値 なし
ファイルから定石データを読み込みます。
引数
self : Openingクラスへのポインタ
in_file_name : 定石データファイル名
戻り値 読み込みに成功したら1、失敗したら0
ファイルに定石データを書き込みます。
引数
self : Openingクラスへのポインタ
in_file_name : 定石データファイル名
戻り値 書き込みに成功したら1、失敗したら0
局面と手番とを指定して、登録されている局面情報を取得します。
取得した局面情報はout_infoに格納されます。
引数
self : Openingクラスへのポインタ
in_board : 情報を取得したい局面
in_color : 情報を取得したい手番
out_info : 局面情報へのポインタ
戻り値 局面情報が登録されていれば1、登録されていなければ0
局面情報を登録します。
引数
self : Openingクラスへのポインタ
in_board : 情報を登録する局面
in_color : 情報を登録する手番
in_info : 登録する局面情報へのポインタ
戻り値 登録に成功したら1、失敗したら0
局面情報の構造体は以下のように定義します。
メンバ変数には評価値しかありませんが、必要に応じてメンバを増やすこともできます。
/* 局面情報 */ typedef struct _PositionInfo PositionInfo; struct _PositionInfo { int Value; /* 評価値 */ };
また局面情報の評価値の取得と設定を行なうマクロを定義します。
#define PositionInfo_Value(self) ((self)->Value) #define PositionInfo_SetValue(self, in_value) ((self)->Value = (in_value))
次節からは上記関数の実装を行ないます。