ここで紹介するのは簡単なパズルゲームの中に登場するクラスです。
ゲーム版の升目に相当する
クラス Cell
と、複数の Cellから構成される
クラス Trash
があります。Trash の基本的な機能は、その内部に含まれる Cellの情報を管理し、 Trash 自体の形状と色を記憶しておくことです。 この他に、ゲームのルールの要請によって、Trashは特定の規則に当てはまる Cellは消去の対象になるとしましょう。 この「Cellの消去を行う」という機能を最初から Trash に組み込むことも可能 ですが、ここでは別の インターフェイス Clearable によって定義することにします。
/** セルの消去のルールを組み込むためのインターフェイス */
public interface Clearable {
/** セルの消去を実行するメソッド */
abstract public boolean clearCells();
}
インターフェイスに定義されるメソッドは全て abstract です。
中身の定義はありません。上の例では clearCells() という名前の
メソッドがそれにあたります。このメソッドの内容は、
上のインターフェイスを実装するクラスの中で記述する必要があります。
/** 消去のルールを組み込んだClearableTrashクラス */
public class ClearableTrash extends Trash implements Clearable{
/** 消去を実行するメソッド
* クリアすべきセルが見つからないとfalseを返す */
public boolean clearCells(){
if( !checkClear() ) return false;
copyStates( state, old_state );
for( int i=0; i<iMax; i++ )
for( int j=0; j<jMax; j++ )
if( toBeClear[i][j] ) {
state[i][j] = EMPTY;
toBeClear[i][j] = false;
}
moveCells();
checkRepaint();
return true;
}
:
:
}