Kifu-for-JS icon indicating copy to clipboard operation
Kifu-for-JS copied to clipboard

Kifu for Winのような盤面編集

Open na2hiro opened this issue 9 years ago • 7 comments

盤上の駒のクリックやドラッグ等により,

  • 盤面の編集
  • 対局開始や終局の入力
  • 棋譜の保存

などができるようにする.いつかやる.

na2hiro avatar Oct 22 '14 10:10 na2hiro

以下は既に作成.

  • ドラッグ&ドロップによる棋譜入力
    • 閲覧時に変化手順を調べたい時などに活用する

以下はビューアとは別物にすべきかも

  • 棋譜の保存
    • オリジナルの棋譜を保存するか編集後の棋譜を保存するか確認する?
  • 対局開始や終局の入力
  • 盤面編集
    • Shogi.jsのeditMode(移動可能や手番を無視するモード)を利用する
    • 足りていないメソッド
      • [x] 盤上の駒を駒台に載せるメソッド https://github.com/na2hiro/Shogi.js/commit/40c1768f2f1ba6766554bc92a496c6d573001535
      • [x] 駒を反転あるいは裏返すメソッド https://github.com/na2hiro/Shogi.js/commit/40c1768f2f1ba6766554bc92a496c6d573001535

na2hiro avatar Feb 12 '15 18:02 na2hiro

詰め将棋などを作成できるサイトを作りたくて、Kifu-for-JSを調べていてこのIssueにたどり着きました。

盤面編集

JKFPlayerがそもそも編集モードをサポートしていないように見えますが、サポートしていますでしょうか。

試しにKifu-for-JSでpreset: "OTHER"でPlayerを初期化し、state.player.shogi.flagEditMode = true;で編集可能にして動作させようと試みました。

しかし、下記のJKFPlayer.prototype.inputMoveで呼び出されるNormalizer.normalizeMinimalがeditModeに対応していないため、colorが強制的に書き換わってしまいます。

  • https://github.com/na2hiro/json-kifu-format/blob/master/src/jkfplayer.ts#L277
  • https://github.com/na2hiro/json-kifu-format/blob/master/src/normalizer.ts#L20-L24

(Kifu-for-JSかjson-kifu-formatのどちらのリポジトリに対するコメントが適切だったかわかりませんでした :bow: )

bluerabbit avatar Oct 25 '15 00:10 bluerabbit

ご質問いただきありがとうございます. JKFPlayerはJKFの再生と(将棋のルールに従った)入力だけを行うためのもので,盤面編集(ルール外移動)に対応しておらず,その予定もありません. 盤面編集はJKFPlayerから離れて将棋盤そのもののモデルである na2hiro/Shogi.js のメソッドを呼ぶほうが自然と考えています. 編集後のShogi.jsの局面から再度入力を行う場合は,その盤面をJKFPlayerコンストラクタに渡すことになると思います. このチケットはJKFPlayerを変更するのではなく,再生モードはJKFPlayer,編集モードはShogiを内部のモデルとするようにKifu for JSを変更することを意図したものです.

ちなみにこのチケットの進捗ですが,大枠はできているのですが細かい編集モード向けのボタン等のUIが定まっておらず放置気味になっています. ただ編集の要望があるということなので,シンプルな状態でもリリースしようかと思います.必要ならそこからforkしてカスタマイズしていただければと思います.

これで回答になっていますでしょうか.

na2hiro avatar Oct 25 '15 08:10 na2hiro

JKFPlayerはJKFの再生と(将棋のルールに従った)入力だけを行うためのもので,盤面編集(ルール外移動)に対応しておらず,その予定もありません.

回答ありがとうございます。承知しました。

盤面編集はJKFPlayerから離れて将棋盤そのもののモデルである na2hiro/Shogi.js のメソッドを呼ぶほうが自然と考えています.

特定局面から開始するのはKifu-for-JSでpreset: "OTHER"で指定すれば出来ることがわかりましたので、考え直すと私の欲しかった盤面編集とはpresetの状態(JSON)を作成するPlayerがあればいいという発想にたどり着きました。

再生モードはJKFPlayer,編集モードはShogiを内部のモデルとするようにKifu for JSを変更することを意図したものです.

なるほど。

Kifu-for-JSはJKFPlayerとShogi.jsを使ったビューア実装の一例と捉えて、編集モード用のKifu-for-JSを作成した方がいいのかな?と考えていましたが、編集モードはShogiを内部のモデルとするという発想はありませんでした。作者ならどういう方向性で実装するのが自然と考えるのかを確認したかったのでコメント頂けて助かりました。

どうやって実現するか検討します。

ただ編集の要望があるということなので,シンプルな状態でもリリースしようかと思います.必要ならそこからforkしてカスタマイズしていただければと思います.

私の実現したいことはKifu-for-JSそのものでは欲しいUIが異なるため参考実装としての使い方になりますが、もし既にあるならリリースあるいはpull requestにして見える状態にして頂けると助かります。

bluerabbit avatar Oct 25 '15 11:10 bluerabbit

編集の要望があるということなので,シンプルな状態でもリリースしようかと思います.必要ならそこからforkしてカスタマイズしていただければと思います.

このbranchをpushして頂くことは可能でしょうか。

bluerabbit avatar Dec 20 '15 04:12 bluerabbit

すみません. 時間が取れておらず,整える余裕がありませんでした.editorブランチをpushしました.

https://github.com/na2hiro/Kifu-for-JS/tree/editor

na2hiro avatar Dec 20 '15 14:12 na2hiro

ありがとうございます :bow:

bluerabbit avatar Dec 20 '15 22:12 bluerabbit