📄 bullet.java
字号:
import javax.microedition.lcdui.game.*;
import javax.microedition.lcdui.*;
public class Bullet extends Sprite {
private final static int ENEMY_PLANE=1;
private final static int PLAYER_PLANE=2;
private final static int BOSS_PLANE=3;
private int frameWidth, frameHeight;
private int canvasWidth, canvasHeight;
private boolean isAlive = false;
private PlayerPlane playerPlane;
private EnemyPlane enemyPlane;
private Boss boss;
private Bullet bullet;
private int planeType;
private int playerBulletSpeed;
private int enemyBulletSpeed;
public final static int SMALL=1;
public final static int MIDDLE=2;
public final static int BIG=3;
public final static int DISPERSE=4;
public int bulletType;
public int playerBulletDirection;
public int bossBulletDirection;
public final static int BULLET_LEFT=0;
public final static int BULLET_MIDDLE=1;
public final static int BULLET_RIGHT=2;
//public int bulletNum[][];//[i][0]表示x坐标
//[i][1]表示y坐标
//[i][2]表示x坐标速度
//[i][3]表示y坐标速度
public Bullet(PlayerPlane playerPlane,Image image, int frameWidth, int frameHeight,int bulletType) {
super(image, frameWidth, frameHeight);
planeType=PLAYER_PLANE;
this.bulletType=bulletType;
this.playerPlane=playerPlane;
this.frameWidth = frameWidth;
this.frameHeight = frameHeight;
defineReferencePixel(frameWidth / 2, frameHeight / 2);
playerBulletSpeed=11;
enemyBulletSpeed=10;
defineCollisionRectangle(2, 5, 15, 14);
}
public Bullet(EnemyPlane enemyPlane,Image image, int frameWidth, int frameHeight) {
super(image, frameWidth, frameHeight);
planeType=ENEMY_PLANE;
this.enemyPlane=enemyPlane;
this.frameWidth = frameWidth;
this.frameHeight = frameHeight;
defineReferencePixel(frameWidth / 2, frameHeight / 2);
playerBulletSpeed=11;
enemyBulletSpeed=10;
}
public Bullet(Boss boss,Image image, int frameWidth, int frameHeight) {
super(image, frameWidth, frameHeight);
planeType=BOSS_PLANE;
this.boss=boss;
this.frameWidth = frameWidth;
this.frameHeight = frameHeight;
defineReferencePixel(frameWidth / 2, frameHeight / 2);
playerBulletSpeed=11;
enemyBulletSpeed=12;
}
public void setCanvasSize(int CanvasWidth, int CanvasHeight) {
this.canvasWidth = CanvasWidth;
this.canvasHeight = CanvasHeight;
}
public void setAlive(int x, int y) {
isAlive = true;
setPosition(x, y);
}
public void setAlive(boolean isAlive) {
this.isAlive = isAlive;
}
public boolean isAlive() {
return isAlive;
}
public void tick() {
switch (planeType) {
case PLAYER_PLANE:
for (int i = 0; i < playerPlane.bulletVector.size(); i++) {
bullet = (Bullet) playerPlane.bulletVector.elementAt(i);
switch (bulletType) {
case SMALL:
case MIDDLE:
case BIG:
if (bullet.isAlive) {
bullet.move(0, -playerBulletSpeed);
}
if (bullet.getY() < 0) {
bullet.isAlive = false;
playerPlane.bulletVector.removeElementAt(i);
i--;
}
break;
case DISPERSE:
if (bullet.isAlive) {
switch (bullet.playerBulletDirection) {
case BULLET_LEFT:
bullet.move(-4, -playerBulletSpeed);
break;
case BULLET_MIDDLE:
bullet.move(0, -playerBulletSpeed);
break;
case BULLET_RIGHT:
bullet.move(4, -playerBulletSpeed);
break;
}
}
if (bullet.getY() < 0) {
bullet.isAlive = false;
playerPlane.bulletVector.removeElementAt(i);
i--;
}
break;
}
}
break;
case ENEMY_PLANE:
for (int i = 0; i < enemyPlane.bulletVector.size(); i++) {
bullet = (Bullet) enemyPlane.bulletVector.elementAt(i);
if (bullet.isAlive) {
bullet.move(0, enemyBulletSpeed);
}
if (bullet.getY() >canvasHeight) {
bullet.isAlive = false;
enemyPlane.bulletVector.removeElementAt(i);
i--;
}
}
break;
case BOSS_PLANE:
for (int i = 0; i < boss.bulletVector.size(); i++) {
bullet=(Bullet)boss.bulletVector.elementAt(i);
if(bullet.isAlive ){
switch (bullet.bossBulletDirection) {
case BULLET_LEFT:
bullet.move(-4, enemyBulletSpeed);
break;
case BULLET_MIDDLE:
bullet.move(0, enemyBulletSpeed);
break;
case BULLET_RIGHT:
bullet.move(4, enemyBulletSpeed);
break;
}
}
if(bullet.getY()>canvasHeight||bullet.getX()>canvasWidth||bullet.getX()<0){
bullet.isAlive=false;
boss.bulletVector.removeElementAt(i);
i--;
}
}
break;
}
}
public void draw(Graphics g) {
switch (planeType) {
case PLAYER_PLANE:
for (int i = 0; i < playerPlane.bulletVector.size(); i++) {
bullet = (Bullet) playerPlane.bulletVector.elementAt(i);
switch (bulletType) {
case SMALL:
g.setClip(bullet.getX() + 7, bullet.getY() - 8, 15, 24);
g.drawImage(bullet.playerPlane.imgBullet,
bullet.getX() + 7, bullet.getY() - 8, 0);
break;
case MIDDLE:
g.setClip(bullet.getX() + 7, bullet.getY() - 8, 15, 24);
g.drawImage(bullet.playerPlane.imgBullet,
bullet.getX() + 7, bullet.getY() - 8 - 48, 0);
break;
case BIG:
g.setClip(bullet.getX() + 7, bullet.getY() - 8, 15, 24);
g.drawImage(bullet.playerPlane.imgBullet,
bullet.getX() + 7, bullet.getY() - 8 - 24, 0);
break;
case DISPERSE:
g.setClip(bullet.getX() + 7, bullet.getY() - 8, 15, 24);
switch (bullet.playerBulletDirection) {
case BULLET_LEFT:
g.drawImage(bullet.playerPlane.imgBullet,
bullet.getX() + 7, bullet.getY() - 8 - 72, 0);
break;
case BULLET_MIDDLE:
g.drawImage(bullet.playerPlane.imgBullet,
bullet.getX() + 7 - 15, bullet.getY() - 8 - 72,
0);
break;
case BULLET_RIGHT:
g.drawImage(bullet.playerPlane.imgBullet,
bullet.getX() + 7, bullet.getY() - 8 - 96, 0);
break;
}
break;
}
}
break;
case ENEMY_PLANE:
for (int i = 0; i < enemyPlane.bulletVector.size(); i++) {
bullet = (Bullet) enemyPlane.bulletVector.elementAt(i);
g.setClip(bullet.getX(), bullet.getY(), 7, 7);
g.drawImage(bullet.enemyPlane.imgBullet, bullet.getX(), bullet.getY(), 0);
}
break;
case BOSS_PLANE:
for (int i = 0; i < boss.bulletVector.size(); i++) {
bullet = (Bullet) boss.bulletVector.elementAt(i);
g.setClip(bullet.getX(), bullet.getY(), 7, 7);
g.drawImage(bullet.boss.imgBullet, bullet.getX(), bullet.getY(), 0);
}
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -