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

MoveList

棋譜の指し手一覧を表示するコンポーネントです。 現在の手数(ハイライト表示)のトラッキングや、リストの項目をクリックした際の指定手数へのジャンプ、および分岐(変化手順)の表示に対応しています。

useKifuPlayer フックから得られる recordcurrentPly、および goToPly 関数を渡すだけで、自動で同期する指し手リストが完成します。

インポート

import { MoveList } from 'react-kifu-player';

基本的な使い方

import React from 'react';
import { useKifuPlayer, ShogiBoard, MoveList } from 'react-kifu-player';

const sampleKifu = `手合割:平手\n手数----指手---------消費時間--\n 1 2六歩(27)\n 2 8四歩(83)\n 3 2五歩(26)\n 4 8五歩(84)`;

export default function App() {
const player = useKifuPlayer(sampleKifu);

return (
<div style={{ display: 'flex', gap: 20 }}>
{/* 盤面領域 */}
<div style={{ flex: '1', maxWidth: 400 }}>
<ShogiBoard
position={player.position}
onForward={player.forward}
onBackward={player.backward}
/>
</div>

{/* 指し手リスト領域 */}
<div style={{ width: 250, height: 400 }}>
<MoveList
moves={player.record.moves}
currentPly={player.currentPly}
onPlyClick={player.goto}
/>
</div>
</div>
);
}

プロパティ (Props)

Prop名必須説明
movesMoveNode[]parseKifu(または useKifuPlayer)によってパースされた棋譜データの moves 配列
currentPlynumber現在の手数。この手数がリスト上でハイライト表示され、リストが自動スクロールします
onPlyClick(ply: number) => voidリスト内の任意の指し手がクリックされた時に呼ばれるハンドラ。通常は player.goto を渡します
themeMoveListThemeテーマを個別に上書きする場合に指定します(通常は ThemeProvider を推奨)
classNamestringルート要素に適用するカスタムクラス名

分岐の表示

KIFファイル等に分岐(変化手順)が含まれている場合、MoveList は分岐ポイントに専用のマーカー(分岐インジケーター)を表示します。ユーザーがその分岐をクリックすると、対象の分岐ツリーに入ることができます。

自動スクロール

currentPly が変更されると、MoveList はその手数が常に表示領域内に収まるように自動的にスクロールを行います。盤面を操作している際にもリストが連動して動くため、ユーザーが現在の局面を見失うことはありません。

実際の動作デモ

以下は MoveList の動作デモです。リストの行をクリックするとハイライトが移動し、連動して動作していることが確認できます。

Loading Demo...