Kifu for JSがReact 19で動かないので作ることにした。React 19で動く修正コードのプルリクエストを出したりするのがカッコ良いのだろうけれど大変そうなので断念。
json-kifu-format と shogi.js というライブラリがとても素晴らしいので自分でプレーヤーを作る方が簡単。棋譜データからの盤面情報の構築、駒を動かす処理など全て揃っている。
この記事では上記ライブラリを使用して独自の将棋プレーヤーを作ろうという時に参考になるかもしれない情報を残しておく。
JKFPlayer.parse でオブジェクトを作って棋譜を操作することで、盤面や持ち駒の状態が更新されるconst kifuText = `
...
手数----指手---------消費時間--
1 6八飛(28) (00:04/00:00:04)
*▲戦型:四間飛車
*▲備考:振り飛車
2 3四歩(33) (00:17/00:00:17)
...
`;
const player = JKFPlayer.parse(kifuText.trim());player.shogi.board に読み込んだ棋譜の初期盤面が入っている。Piece の二次元配列。
この情報を元にプレーヤーの駒の配置を表示する。
この情報は player.forward(); や player.backward(); などで手数を進めたり戻したりすると変更される。
player.shogi.hands に持ち駒の情報が入っている。Piece の二次元配列。
player.shogi.hands[0] は先手の持ち駒。player.shogi.hands[1] は後手の持ち駒。
numToZen(n: number): stringnumToKan(n: number): stringkindToKan(kind: Kind): stringKind を漢字に変換moveToReadableKifu(mv: IMoveFormat): stringIMoveFormat を 6八飛 のような文字列に変換