コンピュータの思考ルーチンの強化
得点テーブルを使うのは序盤のみ。
自分の全滅は最低の評価、相手の全滅は最高の評価。
中盤は独自の評価関数を使う。
- 自分が打てる場所を多く、相手の打てる場所を少なく。
- 確定石のプラス評価。
- Wingのマイナス評価。
- X打ち、C打ちのマイナス評価
ゆらぎ(Randomness)の実装。(毎回同じ手を打たない様に。)
Javaコードのパフォーマンス改善
盤面のオブジェクトを手番が進むたびにコピーする代わりに、事前に60要素の配列を準備して入れておく様に変更。
これだとUndoして一つ前の状態に戻すには配列のインデックスをマイナス1するだけ。
盤面の状態を表すのにオブジェクトの配列ではなくintの配列を使う。(System.arraycopyが使えるので高速。)
オブジェクトの生成を極力避ける。
- Pointオブジェクトは最初にnewしてset()メソッドで使い回す。
- ArrayListは最初にfinal修飾子付きでnewしてclear()で初期化して使い回す。
ループの終了判定に.size()や.lengthを参照しない。
広告の表示方法への工夫
ゲーム中は表示せず、終了後にふわっと現れる様に。
UIの改善
コンピュータ思考中のプログレス表示と処理中アイコン表示を追加。
JUnitを使った単体テスト
思考ルーチンのデバッグには単体テストが不可欠だった。
以上