メインコンテンツまでスキップ

CandidateList

CandidateList は、AIエンジンが出力した候補手(読み筋)のリストを表示するコンポーネントです。

データの取得方法

候補手データは useKifuPlayer から自動的に取得できます。 解析済み棋譜(** 解析 候補N コメントが含まれるKIFなど)を読み込むと、candidates として現在の手数の候補手が自動的に取り出されます。

import { useKifuPlayer, CandidateList } from 'react-kifu-player';

function PlayerWithCandidates({ kifuString }) {
const player = useKifuPlayer(kifuString);

return (
<CandidateList
// player.candidates に現在手数の候補手リストが入っている
candidates={player.candidates}
onCandidateClick={(candidate) => {
// クリックされた候補手の読み筋を盤面上で再生
player.playVariation(candidate.readMoves, candidate.score);
}}
/>
);
}

プロパティ (Props)

Prop名必須説明
candidatesCandidate[]候補手の配列。useKifuPlayercandidates をそのまま渡せます
onCandidateClick(candidate: Candidate) => void候補手がクリックされた際のコールバック

Candidate 型

type Candidate = {
/** 候補手ID (1, 2, 3...) */
id: number;
/** 評価値 */
score: number;
/** 探索深さ */
depth?: number;
/** 読み筋 (USIまたはKIF形式) */
readMoves: string;
/** 表示用に整形された読み筋 */
formattedMoves?: string;
};

候補手クリック時の読み筋再生

useKifuPlayerplayVariation と組み合わせることで、クリックした候補手の読み筋を盤面上で再生できます。returnToMainLine で本譜に戻ることができます。

const player = useKifuPlayer(kifuString);

<CandidateList
candidates={player.candidates}
onCandidateClick={(cand) => player.playVariation(cand.readMoves, cand.score)}
/>
<button onClick={player.returnToMainLine}>本譜に戻る</button>

実際の動作デモ

以下は demo.kifu(解析情報入り)を読み込み、現在手数の候補手を表示するデモです。棋譜を進めると各手の候補手が切り替わります。候補手をクリックするとその読み筋が再生されます。

Loading Demo...