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; } }共通の処理は親クラスで処理し、非共通の処理は子供のクラスで再定義します。