⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bullets.java

📁 JAVA ME手机游戏FLY,玩家操控飞机
💻 JAVA
字号:
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.Sprite;
import javax.microedition.lcdui.game.GameCanvas;
import java.util.Random;
/** /??
Bullets类 ?/*/
public class Bullets extends GameCanvas {
/** /??
随机数?/*/
    private Random rnd;
/** /??
创建子弹精灵?/*/
    private Sprite bulletSprite;
/** /??
子弹图片?/*/
    private Image bulletImage;
/** /??
子弹总数?/*/
    private int bulletsTotal;
/** /??
屏幕的高?/*/
    private int height;
/** /??
屏幕的宽?/*/
    private int width;
/** /??
子弹状态数组?/*/
    protected int[][] bulletState;
/** /??
子弹状态值?/*/
    private final int bulletTypeLeft = 0;
/** /??
子弹状态值?/*/
    private final int bulletTypeRight = 1;
/** /??
子弹状态值?/*/
    private final int bulletTypeTop = 2;
/** /??
子弹状态值?/*/
    private final int bulletTypeBottom = 3;

/** /??
定义数字5?/*/

    private static final int N5 = 5;

/** /??
定义数字6?/*/

    private static final int N6 = 6;

/** /??
定义数字1?/*/

    private static final int N1 = 1;

/** /??
定义数字2?/*/

    private static final int N2 = 2;

/** /??
定义数字3?/*/

    private static final int N3 = 3;

/** /??
定义数字4?/*/
    private static final int N4 = 4;

/** /??
定义数字50?/*/

    private static final int N0 = 0;

/** /??
定义数字10?/*/

    private static final int N10 = 10;

/** /??
定义数字0x7fffffff?/*/

    private static final int R = 0x7fffffff;

/** /??
子弹类构造函数?/*/
    public Bullets() {
        super(true);
        bulletImage = ImageTools.getImage("/bullet.png");
        bulletSprite = new Sprite(bulletImage, N5, N5);
        height = getHeight();
        width = getWidth();
        bulletsTotal = N4 * N10;
        bulletState = new int[bulletsTotal][N6];
        rnd = new Random();

    }
/** /?? 得到bulletSprite
?
@return bulletSprite ?/*/

    protected final Sprite getBulletSprite() {

        return bulletSprite;

    }

/** /?? 得到'bulletsTotal

?@return bulletsTotal ?/*/

    protected final int getBulletsTotal() {

        return bulletsTotal;

    }

/** /?? 得到'bulletState
?@param i
?@param j

?@return bulletState[i][j] ?/*/

    protected final int getBulletState(final int i, final int j) {

        return bulletState[i][j];

    }

/** /?? 子弹初状态始化

?@param i ?/*/
    protected final void bulletStateInit(final int i) {
        bulletState[i][N0] = (rnd.nextInt() & R) % N4;
        bulletState[i][N5] = N1;
        switch(bulletState[i][0]) {
        case bulletTypeLeft:
            bulletState[i][N1] = -N10;
            bulletState[i][N2] = (rnd.nextInt() & R) % height;
            bulletState[i][N3] = ((rnd.nextInt() & R) % N3) + N5;
            bulletState[i][N4] = (rnd.nextInt() & R) % N3 + N4;
            break;
        case bulletTypeRight:
            bulletState[i][N1] = width + N5;
            bulletState[i][N2] = (rnd.nextInt() & R) % height;
            bulletState[i][N3] = ((rnd.nextInt() & R) % N3) + N4;
            bulletState[i][N4] = (rnd.nextInt() & R) % N3 + N3;
            break;
        case bulletTypeTop:
            bulletState[i][N1] = (rnd.nextInt() & R) % width;
            bulletState[i][N2] = -N10;
            bulletState[i][N3] = (rnd.nextInt() & R) % N3 + N4;
            bulletState[i][N4] = ((rnd.nextInt() & R) % N3) + N5;
            break;
        case bulletTypeBottom:
            bulletState[i][N1] = (rnd.nextInt() & R) % width;
            bulletState[i][N2] = height + N5;
            bulletState[i][N3] = (rnd.nextInt() & R) % N3 + N3;
            bulletState[i][N4] = ((rnd.nextInt() & R) % N3) + N4;
            break;
        default: break;
        }
    }
/** /?? 子弹初始化

?@param bs ?/*/
    public final void bulletInit(final int bs) {
        for (int j = N0; j < bs; j++) {
            bulletStateInit(j);
        }
    }
/** /?? 更新子弹状态信息

?@param i ?/*/
    protected final void bulletUpdate(final int i) {
        bulletState[i][N1] = bulletState[i][N1] + bulletState[i][N3];
        bulletState[i][N2] = bulletState[i][N2] + bulletState[i][N4];
        if (bulletState[i][N1] < -N10 || bulletState[i][N1] > (width + N5)) {
            bulletState[i][N3] = -bulletState[i][N3];
        }
        if (bulletState[i][N2] < -N10 || bulletState[i][N2] > (height + N5)) {
            bulletState[i][N4] = -bulletState[i][N4];
        }
    }
/** /?? 更新子弹绝对位置

?@param i ?/*/
    private void bulletSpriteUpdate(final int i) {
        bulletSprite.setPosition(bulletState[i][N1], bulletState[i][N2]);
    }
/** /?? 图片定位后绘图

?@param g

?@param i ?/*/
    public final void bulletPaint(final Graphics g, final int i) {
        bulletUpdate(i);
        bulletSpriteUpdate(i);
        bulletSprite.paint(g);
    }
/** /?? 检查子弹是否和飞机碰撞

?@param s

?@return s.collidesWith(bulletSprite, true) ?/*/
    protected final boolean checkExplosion(final Sprite s) {
        return s.collidesWith(bulletSprite, true);
    }
/** /?? 销毁子弹

?@param i ?/*/
    protected final void bulletDestroy(final int i) {
        bulletState[i][N5] = N0;
    }
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -