組込み屋でもアプリがしたい! 第2局

アルゴリズムを改良していく前に、いったんアプリの機能とソースの体裁をきちんと整えておきます。

図

機能の不備を改善

  • 着手可能判定とパスの処理を追加
  • 終了判定と勝ち負け判定を追加
  • 表示やメッセージを日本語化

リファクタリング

  • 処理を整理して無駄なクラス(NextMove, Read)を削除
  • 盤面クラス(Board)と人工知能クラス(AI)を分離

今回のソースのスナップショット

今回のTIPS

C#の仮想メソッド、抽象メソッド、抽象クラスについて。

  • virtualなメソッドでないとoverrideできない。
  • 明示的にoverrideを指定しないとオーバーライドされず、基底クラスの実装が呼ばれる。
    • ここがC++とは異なる。
  • abstractなメソッドは、実装を持たない。必ずオーバーライドが必要。
  • abstractなメソッドは、暗黙にvirtual。
  • abstractなクラスでないと、abstractなメソッドは持てない。
  • abstractなクラスは、インスタンス化できない。必ず継承が必要。
  • abstractなクラスにメソッドの実装があってもよい。