対戦型五目並べ

アプレット

目次

  1. 動作の概説
  2. 共用ライブラリ
  3. サーバ
  4. アプレット
    1. メインクラス(GoApplet.java)
    2. メディエーター・クラス(Mediator.java)
    3. 通信スレッド・クラス(CommThread.java,CommNotify.java)
    4. 通信オブジェクト・クラス(CommItem.java,HandCommItem.java,WinCommItem.java,LoseCommItem.java,NogameCommItem.java)
    5. GUIオブジェクト・クラス(BoardImage.java,Controls.java,JumpDialog.java)
    6. ステータス・クラス(Status.java,SelfStatus.java,PartnerStatus.java)
  5. 五目並べ競技ルール判定
  6. 感想

さて、アプレットの方である。この構成をまずUML風に示そう。

GoApplet 1--- Mediator 1-- CommThread             SelfStatus PartnerStatus
                       1--------------- BoardImage    ↑     ↑
                       1--------------- Controls      |     |
                       3------------------------------  Status

要するに Mediator パターンを使っているので、Mediator クラスがすべての集約的なコントローラーになっている。また、手番状態を表すのに、State パターンを使っており、Status とその派生クラスで「状態」を示している。

また、CommThread クラスは通信を担当するクラスであり、ソケットからの読み込みはスレッドとして実現され、Observer パターンにより、Mediator にコールバックする(CommNotifyインターフェイス)。この CommThread クラスはコールバック commNotify( CommItem ci ); で、通信内容を CommItem 派生クラスで伝える。プロトコル種別に応じて、CommItem 派生クラスには HandCommItem, WinCommItem, LoseCommItem, NogameCommItem クラスがあり、CommItem クラス自身のインスタンスも「内部エラー〉を表現するのに使われる。

また、CommItem 派生クラスと Status 派生クラスの間で一種の Visitor パターンを使っている。これは後のお楽しみ。



copyright by K.Sugiura, 1996-2006