Trait usiagent::player::USIPlayer[][src]

pub trait USIPlayer<E>: Debug where
    E: PlayerError
{ const ID: &'static str; const AUTHOR: &'static str;
Show 17 methods fn get_option_kinds(
        &mut self
    ) -> Result<BTreeMap<String, SysEventOptionKind>, E>;
fn get_options(&mut self) -> Result<BTreeMap<String, UsiOptType>, E>;
fn take_ready<W, L>(
        &mut self,
        on_keep_alive: OnKeepAlive<W, L>
    ) -> Result<(), E>
    where
        W: USIOutputWriter + Send + 'static,
        L: Logger + Send + 'static
;
fn set_option(
        &mut self,
        name: String,
        value: SysEventOption
    ) -> Result<(), E>;
fn newgame(&mut self) -> Result<(), E>;
fn set_position(
        &mut self,
        teban: Teban,
        ban: Banmen,
        ms: Mochigoma,
        mg: Mochigoma,
        n: u32,
        m: Vec<Move>
    ) -> Result<(), E>;
fn think<L, S, P>(
        &mut self,
        think_start_time: Instant,
        limit: &UsiGoTimeLimit,
        event_queue: Arc<Mutex<UserEventQueue>>,
        info_sender: S,
        periodically_info: P,
        on_error_handler: Arc<Mutex<OnErrorHandler<L>>>
    ) -> Result<BestMove, E>
    where
        L: Logger + Send + 'static,
        S: InfoSender,
        P: PeriodicallyInfo
;
fn think_ponder<L, S, P>(
        &mut self,
        limit: &UsiGoTimeLimit,
        event_queue: Arc<Mutex<UserEventQueue>>,
        info_sender: S,
        periodically_info: P,
        on_error_handler: Arc<Mutex<OnErrorHandler<L>>>
    ) -> Result<BestMove, E>
    where
        L: Logger + Send + 'static,
        S: InfoSender + Send + 'static,
        P: PeriodicallyInfo
;
fn think_mate<L, S, P>(
        &mut self,
        limit: &UsiGoMateTimeLimit,
        event_queue: Arc<Mutex<UserEventQueue>>,
        info_sender: S,
        periodically_info: P,
        on_error_handler: Arc<Mutex<OnErrorHandler<L>>>
    ) -> Result<CheckMate, E>
    where
        L: Logger + Send + 'static,
        S: InfoSender,
        P: PeriodicallyInfo
;
fn on_stop(&mut self, e: &UserEvent) -> Result<(), E>
    where
        E: PlayerError
;
fn on_ponderhit(&mut self, e: &UserEvent) -> Result<(), E>
    where
        E: PlayerError
;
fn gameover<L>(
        &mut self,
        s: &GameEndState,
        event_queue: Arc<Mutex<UserEventQueue>>,
        on_error_handler: Arc<Mutex<OnErrorHandler<L>>>
    ) -> Result<(), E>
    where
        L: Logger,
        Arc<Mutex<OnErrorHandler<L>>>: Send + 'static
;
fn on_quit(&mut self, e: &UserEvent) -> Result<(), E>
    where
        E: PlayerError
;
fn quit(&mut self) -> Result<(), E>; fn handle_events<'a, L>(
        &mut self,
        event_queue: &'a Mutex<UserEventQueue>,
        on_error_handler: &Mutex<OnErrorHandler<L>>
    ) -> Result<bool, E>
    where
        L: Logger,
        E: Error + Debug,
        Arc<Mutex<OnErrorHandler<L>>>: Send + 'static,
        EventHandlerError<UserEventKind, E>: From<E>
, { ... }
fn dispatch_events<'a, L>(
        &mut self,
        event_queue: &'a Mutex<UserEventQueue>,
        on_error_handler: &Mutex<OnErrorHandler<L>>
    ) -> Result<(), EventDispatchError<'a, UserEventQueue, UserEvent, E>>
    where
        L: Logger,
        E: Error + Debug,
        Arc<Mutex<OnErrorHandler<L>>>: Send + 'static,
        EventHandlerError<UserEventKind, E>: From<E>
, { ... }
fn apply_moves<T, F>(
        &self,
        state: State,
        teban: Teban,
        mc: MochigomaCollections,
        m: &Vec<AppliedMove>,
        r: T,
        f: F
    ) -> (Teban, State, MochigomaCollections, T)
    where
        F: FnMut(&Self, Teban, &Banmen, &MochigomaCollections, &Option<AppliedMove>, &Option<MochigomaKind>, T) -> T
, { ... }
}
Expand description

プレイヤー(AI本体)の実装

Associated Constants

このAIの名前

このAIの作者

Required methods

サポートしているオブションの一覧をオプション名をキーとしたマップで返す

サポートしているオプションに関する設定情報(maxとminの値など)をオプション名をキーとしたマップで返す

プレイヤーの機能で必要な時間のかかる前処理などをここで行う

Arguments
  • on_keep_alive - 定期的にGUIに空行を送信してエンジンがフリーズしていないことを通知するためのオブジェクト

オプションを設定する

Arguments
  • name - オプションの名前
  • value - オプションの値

ゲーム開始前の処理。対局ごとに毎回呼ばれる

局面の初期化。毎回初期局面と現在の局面までの全ての指し手のリストが送られてくる。

Arguments
  • teban - 初期局面時の手番
  • ban - 盤面
  • ms - 先手の持ち駒
  • mg - 後手の持ち駒
  • n - 次の手が何手目か。(USIプロトコルのSFENの原案にあるために存在するが、現在固定で1が送られてくるため無視してかまわない)
  • m - 指し手のリスト

思考開始。この関数の戻り値が指し手となる。AIの実装の核となる部分

Arguments
  • think_start_time - 思考開始時の時間。通常は現在の時刻だが、go ponderの後に予想した指し手が外れた場合などはstopコマンドを受け取った時刻となる。
  • limit - 持ち時間
  • event_queue - ユーザーイベントが格納されているキュー。stopコマンドを受信した時やgo ponderの指し手が当たった時,エンジンの終了時などに送られてくる。
  • info_sender - infoコマンドを送信するためのオブジェクト。
  • pinfo_sender - あらかじめスケジュールされた一定の間隔でinfoコマンドを送信するための機能を持つオブジェクト
  • on_error_handler - エラーをログファイルなどに出力するためのオブジェクト

思考開始。この関数の戻り値が指し手となる。AIの実装の核となる部分

Arguments
  • limit - 持ち時間
  • event_queue - ユーザーイベントが格納されているキュー。stopコマンドを受信した時やgo ponderの指し手が当たった時,エンジンの終了時などに送られてくる。
  • info_sender - infoコマンドを送信するためのオブジェクト。
  • pinfo_sender - あらかじめスケジュールされた一定の間隔でinfoコマンドを送信するための機能を持つオブジェクト
  • on_error_handler - エラーをログファイルなどに出力するためのオブジェクト

詰め将棋回答時に呼ばれる関数

Arguments
  • limit - 持ち時間
  • event_queue - ユーザーイベントが格納されているキュー。stopコマンドを受信した時やgo ponderの指し手が当たった時,エンジンの終了時などに送られてくる。
  • info_sender - infoコマンドを送信するためのオブジェクト。
  • pinfo_sender - あらかじめスケジュールされた一定の間隔でinfoコマンドを送信するための機能を持つオブジェクト
  • on_error_handler - エラーをログファイルなどに出力するためのオブジェクト

UserEvent::Stopイベントがキューに追加されている状態でdispatch_eventsでイベントを処理すると呼ばれる。

UserEvent::PonderHitイベントがキューに追加されている状態でdispatch_eventsでイベントを処理すると呼ばれる。

対局終了時に呼ばれる

Arguments
  • s - 勝敗を表すオブジェクト
  • event_queue - ユーザーイベントが格納されているキュー。stopコマンドを受信した時やgo ponderの指し手が当たった時,エンジンの終了時などに送られてくる。
  • on_error_handler - エラーをログファイルなどに出力するためのオブジェクト

UserEvent::Quitイベントがキューに追加されている状態でdispatch_eventsでイベントを処理すると呼ばれる。

終了時に呼ばれる関数

Provided methods

イベントを処理する関数。これにイベントキューを渡すかEventDispatcherを実装したオブジェクトのdispatch_eventsにイベントキューを渡すまでイベントは処理されない。

Arguments
  • event_queue - ユーザーイベントが格納されているキュー。stopコマンドを受信した時やgo ponderの指し手が当たった時,エンジンの終了時などに送られてくる。
  • on_error_handler - エラーをログファイルなどに出力するためのオブジェクト

USIPlayer::handle_eventsから呼ばれる内部関数。イベントキュー内のイベントを処理する。

Arguments
  • event_queue - ユーザーイベントが格納されているキュー。stopコマンドを受信した時やgo ponderの指し手が当たった時,エンジンの終了時などに送られてくる。
  • on_error_handler - エラーをログファイルなどに出力するためのオブジェクト

手のリストを現在の局面に適用した結果を返す

Arguments
  • state - 手の列挙に使うビットボードと盤面などの内部状態を持つオブジェクト
  • teban - 局面開始時の手番
  • mc - 局面開始時の持ち駒
  • m - 開始局面から現在までの指し手のリスト
  • r - コールバック関数に渡され関数の戻り値の一部となるオブジェクト(任意の型)
  • f - 手の適用のたびに呼ばれるコールバック関数

Implementors