[ Java奮戦記_目次 ]
大まかな仕様を決める
とりあえず最初に、以下の仕様を思いつきました。
- SGF形式のファイルを読み書きできるようにする
- 棋譜を自動再生できるようにする
- 碁盤は19路盤のみ使用する
- 検討ができるようにする
- 数種類の碁盤を使用できる
SGF形式のファイルを読み書きできるようにする
棋譜提供サイトに行くと、SGF形式でデータが提供されていることが多いので、その形式で読み書きできることを目指します。
ただし、実現するのは本線の手順のみ。SGF形式には、参考図などを保管する機能もあるのですが、私はそこまで求めていないので、参考図機能は実現しません。
データには、対局情報も入っていますので、それも表示・編集できるようにします。
SGF形式の詳細については、以下のサイトを参考にしましたので、ご参照ください。
→ 参考その1
クリックしてリンク先へ
→ 参考その2
クリックしてリンク先へ
棋譜を自動再生できるようにする
やはり棋譜は自動再生したい。一手一手クリックしていると、そのクリック音が気になるものです。再生速度を調節できるところまで実現します。
碁盤は19路盤のみ使用する
プロの棋譜を再現するのが最大の目的なので、19路盤のみ使用します。
検討ができるようにする
棋譜を再生している途中で、もし別の手を打ったらどうなるのか、ということを考えたくなります。そんな時に使う機能です。
数種類の碁盤を使用できる
これは、必須の機能ではありません。なぜ、この機能を入れたかというと、GUIプログラムを作成するときによく言われる、MVC(Model View Controller)の機能分割の考え方を試したかったからです。この機能を実装することで、特にUI(ユーザーインターフェース)の独立性を実体験します。
このように、仕様はいたって単純。むしろ問題になるのは、Javaの素人が、この仕様をどのようにクラス分けするのか、個別のクラスのロジック(例えば、アゲハマの処理など)をどうするのか、といったところです。MVC(Model View Controller)の考え方に従うつもりだったのに、途中からモデルなのかコントローラーなのかよくわからなくなったり…。とにかく、当初このような仕様を想定して作成を開始しました。