[ Java奮戦記_目次 ]

大まかな仕様を決める

とりあえず最初に、以下の仕様を思いつきました。
  1. SGF形式のファイルを読み書きできるようにする
  2. 棋譜を自動再生できるようにする
  3. 碁盤は19路盤のみ使用する
  4. 検討ができるようにする
  5. 数種類の碁盤を使用できる


SGF形式のファイルを読み書きできるようにする

棋譜提供サイトに行くと、SGF形式でデータが提供されていることが多いので、その形式で読み書きできることを目指します。
ただし、実現するのは本線の手順のみ。SGF形式には、参考図などを保管する機能もあるのですが、私はそこまで求めていないので、参考図機能は実現しません。
データには、対局情報も入っていますので、それも表示・編集できるようにします。
SGF形式の詳細については、以下のサイトを参考にしましたので、ご参照ください。
→ 参考その1 クリックしてリンク先へ
→ 参考その2 クリックしてリンク先へ


棋譜を自動再生できるようにする

やはり棋譜は自動再生したい。一手一手クリックしていると、そのクリック音が気になるものです。再生速度を調節できるところまで実現します。


碁盤は19路盤のみ使用する

プロの棋譜を再現するのが最大の目的なので、19路盤のみ使用します。


検討ができるようにする

棋譜を再生している途中で、もし別の手を打ったらどうなるのか、ということを考えたくなります。そんな時に使う機能です。


数種類の碁盤を使用できる

これは、必須の機能ではありません。なぜ、この機能を入れたかというと、GUIプログラムを作成するときによく言われる、MVC(Model View Controller)の機能分割の考え方を試したかったからです。この機能を実装することで、特にUI(ユーザーインターフェース)の独立性を実体験します。


このように、仕様はいたって単純。むしろ問題になるのは、Javaの素人が、この仕様をどのようにクラス分けするのか、個別のクラスのロジック(例えば、アゲハマの処理など)をどうするのか、といったところです。MVC(Model View Controller)の考え方に従うつもりだったのに、途中からモデルなのかコントローラーなのかよくわからなくなったり…。とにかく、当初このような仕様を想定して作成を開始しました。