アルゴリズムを改良していく前に、いったんアプリの機能とソースの体裁をきちんと整えておきます。
機能の不備を改善
- 着手可能判定とパスの処理を追加
- 終了判定と勝ち負け判定を追加
- 表示やメッセージを日本語化
- 処理を整理して無駄なクラス(NextMove, Read)を削除
- 盤面クラス(Board)と人工知能クラス(AI)を分離
今回のTIPS
C#の仮想メソッド、抽象メソッド、抽象クラスについて。
- virtualなメソッドでないとoverrideできない。
- 明示的にoverrideを指定しないとオーバーライドされず、基底クラスの実装が呼ばれる。
- abstractなメソッドは、実装を持たない。必ずオーバーライドが必要。
- abstractなメソッドは、暗黙にvirtual。
- abstractなクラスでないと、abstractなメソッドは持てない。
- abstractなクラスは、インスタンス化できない。必ず継承が必要。
- abstractなクラスにメソッドの実装があってもよい。