📄 helicopter.java
字号:
public class Helicopter extends Actor{
public Helicopter(){
world = World.getInstance();
planeActor = BattlePlaneActor.getInstance();
}
public void initData(){
super.initSpiritDate("/helicopter.bin", "/helicopter.png",
"/helicopterCom.bin");
}
public void changeMyState(){
int [] data = getIProcessData();
if(processCount < getIProcess()){
if (++processTimeCount <= data[processCount * 3 + 0]) {
int orbitType = data[processCount * 3 + 1];
int bulletType = data[processCount * 3 + 2];
updateXY(orbitType,bulletType);
}else{
processCount++;
processTimeCount=0;
}
}
}
public void updateXY(int orbitType,int bulletType) {
int xPos = getIPosX();
int yPos = getIPosY();
int speed = getSpeed() << 8;
switch (orbitType) {
case 12: // 顺时针向下
setIPosY(yPos + speed);
break;
case 0: // 原地不动
if (processTimeCount == 1) {
whichDirection();
xSpeed = Tool.getXSpeedByAngel(angel,6);
ySpeed = Tool.getYSPeedByAngel(angel,6);
}
if (processTimeCount % 4 == 0) {
if(getAction() == 0){
world.newBullet(bulletType, xPos - (10 << 8),
yPos - (12 << 8), xSpeed, ySpeed);
world.newBullet(bulletType, xPos + (10 << 8),
yPos - (12 << 8), xSpeed, ySpeed);
}else if(getAction() == 1){
world.newBullet(bulletType, xPos - (7 << 8),
yPos - (19 << 8), xSpeed, ySpeed);
world.newBullet(bulletType, xPos + (7 << 8),
yPos - (5 << 8), xSpeed, ySpeed);
}else{
world.newBullet(bulletType, xPos - (7 << 8),
yPos - (5 << 8), xSpeed, ySpeed);
world.newBullet(bulletType, xPos + (7 << 8),
yPos - (19 << 8), xSpeed, ySpeed);
}
}
if(processTimeCount == 6){
setAction((byte)0);
angel = 0;
xSpeed = 0;
ySpeed = 0;
}
break;
case 9: // 顺时针135度
setIPosX(xPos + speed);
setIPosY(yPos + speed);
break;
case 6: // 向右
setIPosX(xPos + speed);
break;
case 3: // 顺时针45度向上
setIPosX(xPos + speed);
setIPosY(yPos - speed);
break;
case 24: // 屏幕后
setIPosY(yPos - speed);
break;
case 15: // 顺时针225度向下
setIPosX(xPos - speed);
setIPosY(yPos + speed);
break;
case 21: // 顺时针315度向上
setIPosX(xPos - speed);
setIPosY(yPos - speed);
break;
case 18: // 屏幕向左
setIPosX(xPos - speed);
break;
case 25:// 向下
setIPosY(yPos + (2 << 8));
break;
}
}
public void whichDirection() {
if (Tool.abs(planeActor.getIPosX() - getIPosX()) * 2 < 20
* (planeActor.getIPosY() - getIPosY()) / 19) {
setAction((byte)0);
angel = 270;
} else if (planeActor.getIPosX() - getIPosX() < 0) {
setAction((byte)1);
angel = 225;
} else {
setAction((byte)2);
angel = 315;
}
}
private World world;
private BattlePlaneActor planeActor;
private int angel = 0; //飞机转向的角度
private int xSpeed = 0;
private int ySpeed = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -