作って遊ぼうJava(16) 石を取る処理

石を取る処理を作成(Small Basicより移植)しました。Igo1_12として公開します。
ここでJavaランタイムについてお断りしておきます。前回、JRE 7を使うと書いたのですが、JRE 7だとオンラインで実行できないため、JRE 7はアンインストールし、JRE 6を使うようにしました。ローカルでは問題なく動いていたのですが、オンラインの場合には問題か制約がある模様です。
さて、今回追加したのは、IgoGameクラスのremoveStonesIfCaptured()メソッドです。このメソッドでは、打った石の上下左右の石を調べ、敵石だった場合はその活路(呼吸点)を求めます。活路が無い場合はその一連の敵石を取ります。そのために活路を求めるcountLiberty()メソッドも追加しました。このメソッドは四方に活路があるかどうか、再帰的に調べるようになっています。以前述べた、三目並べのミニマックス法のときと同様、再帰呼び出しではJavaのローカル変数や引数という仕組みがうまく作用するため、Small Basicのプログラムのように変数を自力でセーブ・リストア(Push/Pop)しなくて済みます。
図:黒が白を1子取る
【図19 黒が白を1子取ってアゲハマとして”1″が表示されている】
パス、投了の処理や、着手禁止の判定ができていません。勝敗の判定もまだです。順番に移植していこうと思います。
ところで、今回からJDK 7に付属するjavadocコマンドを使ってドキュメントを作成しています。JDK 6で作ったドキュメントを消さずにJDK 7でドキュメントを作成すると、JDK 6で作ったstylesheet.cssが更新されないため、ドキュメントのスタイルがない状態になってしまいます。Eclipseの場合はdoc、NetBeans IDEの場合はdistというフォルダにあるstylesheet.cssを削除してからjavadocを実行すれば、JDK 7の新しいスタイルが適用されます。
(つづく)

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。