概要
Kifu for JSがReact 19で動かないので作ることにした。React 19で動く修正コードのプルリクエストを出したりするのがカッコ良いのだろうが。
json-kifu-format と shogi.js というライブラリがとても良いので自分でプレーヤーを作る方が簡単。将棋の駒の動き、棋譜データからの盤面情報の構築など全てやってくれる。
この記事では自分で将棋プレーヤーを作ろうという時に参考になるであろう情報を残しておく。
JKFPlayer
- 棋譜のテキスト・ファイルをパースして盤面や持ち駒の状態をオブジェクト化する
JKFPlayer.parse
でオブジェクトを作って棋譜を操作することで、盤面や持ち駒の状態が更新される- JKFPlayerにはstaticな便利メソッドも豊富にある
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]
は後手の持ち駒。