📄 bullets.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 + -