admin.aucBeam = getAudioClip( getDocumentBase(), "sound/beam.au" ); admin.imgJiki = getImage( getDocumentBase(), "image/im1.gif" );繰り返しの中で、移動処理(move)、描画処理、状態表示(時間、得点)を行います。
while(true) {
admin.move();//敵の生成や移動
imgGra.setColor(Color.black);
imgGra.fillRect(0,0,Width,Height);
admin.draw(imgGra);//描画
gra.drawImage(img,0,0,null);
scLabel.setText("Time: "+admin.timer+" , Score: "+admin.score);
try {
Thread.currentThread().sleep(55);
} catch(InterruptedException exception) {}
}
// 自機が発射するミサイルを管理するリスト ListAdmin missileList; // 敵を管理するリスト ListAdmin enemyList; // 敵弾を管理するリスト ListAdmin enemy2List; // 爆発している敵を管理するリスト ListAdmin bombList; // 画面上を動くオブジェクトすべてを管理するリスト ListAdmin allObject;Fieldadminのコンストラクタで、各リストを、allObjectリストに結合しています。これで、allObjectに対して、move などのコマンドを出すと、リストに結合されたすべてが 「移動」処理を行います。このリスト処理を行うため、ListElementクラスが用意されています。「もの」の移動を処理する基本クラスとして、MoveObjectクラスが定義され、これはListElementクラスを継承しています。
// リスト内の要素すべての描画をおこなう。
void draw(Graphics g) {
ListElement obj;
obj = head.next;
while( obj != tail ) {
obj.draw(g);
obj = obj.next;
}
}
共通の処理は親クラスで処理し、非共通の処理は子供のクラスで再定義します。