Enemy.javaのコード

Enemy.javaのコードリストです。

/*
 * Enemy.java
 */
 
 import com.nttdocomo.ui.*;
 import java.util.Random;
 
 public class Enemy {
    int xpos = 0;
    int ypos = 0;
    int dx = 0;
    int dy = 0;
    Graphics g = null;
    Image enemyImage = null;
    
    // 敵機の左右と上下の動きの定義
    int [][] xDeltaArray = {
                {0, 1, 1, 1, 0, -1, -1, -1, 0, 0, 1, 0, 1, -1, 0, 1, 0, 1, 1, 0},
                {-1, 0, 1, 2, 1, 0, -1, -2, -1, 0, -1, -2, -1, 0, 1, 2, 1, 0, 0, 0},
                {0, 0, -1, -1, 0, 0, -1, -1, 0, 0, 1, 2, 1, 0, -1, -2, -1, 0, 1, 1},
                {1, 0, -1, -1, 0, 0, -1, -1, 0, 1, 1, 1, 0, 0, 1, -1, 1, 0, 1, 1},
            };
    int [][] yDeltaArray = {
                {1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
                {1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1},
                {1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 0, -1, -1, -1, 0, 1, 2, 1, 1},
                {1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1},
            };
    int [] xDelta, yDelta;
    
    int count = 0;        // Move()関数が呼び出された回数
    
    Enemy(Graphics g) {
        this.g = g;
        Random rand = new Random();
        xpos = rand.nextInt() % Display.getWidth();
        if (xpos < 0) {    //マイナスだと都合が悪いのでプラスにしてしまう
            xpos *= -1;
        }
        
        //敵の動きの選択
        int enemyNum = rand.nextInt() % 4;
        if (enemyNum < 0) {    //マイナスだと都合が悪いのでプラスにしてしまう
            enemyNum *= -1;
        }
        xDelta = xDeltaArray[enemyNum];
        yDelta = yDeltaArray[enemyNum];
        
        try {
            MediaImage m = MediaManager.getImage("resource:///enemy.gif");
            m.use();
            enemyImage = m.getImage();
        } catch(Exception e) {
            System.out.println("enemy.gifイメージが見つかりません");
        }
    }
    
    public int getWidth() {        //イメージの幅を返す
        return enemyImage.getWidth();
    }
    
    public int getHeight() {       //イメージの高さを返す
        return enemyImage.getHeight();
    }

    public boolean move() {
        count++;
        int tick = 10;        // tickの回数分同じ動きをする
        int xid = (count / tick) % xDelta.length;    // xDeltaのid番目のデータ
        int yid = (count / tick) % yDelta.length;    // yDeltaのid番目のデータ
        
        xpos += xDelta[xid];    // x方向の増分を加える
        ypos += yDelta[yid];    // y方向の増分を加える
        
        // はみだしチェック x方向
        if (xpos < -3) {
            xpos = -3;
        } else if (xpos > Display.getWidth() - enemyImage.getWidth() + 3) {
            xpos = Display.getWidth() - enemyImage.getWidth() + 3;
        }
        
        // はみ出しチェック y方向
        if (ypos < 0) {
            ypos = 0;
        }
        
        if (ypos > Display.getHeight()) {    // 下側に消えていった
            return false;
        } else {    // まだいるぞ
            g.drawImage(enemyImage, xpos, ypos);
            return true;
        }
    }
}