📄 npc_west.java
字号:
import java.util.Stack;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
/*
* 创建日期 2006-1-17
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
/**
* @author admin
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class Npc_West extends Sprite{
int num ;
int littleId;
int speed;
int npcState;
private int preNpcState;//2石头在地上 4石头在手上 8石头在空中
private int playerMidX;
private int npcMidX;
private int count;
private int up,down;
int hp;
GameDataSimple data = WestGameCanvas.data;
/**
* @param id
* @param image
* @param frameWidht
* @param frameHeight
*/
public Npc_West(int id,int littleId,int num, Image image, int frameWidht, int frameHeight) {
super(id, image, frameWidht, frameHeight);
this.num = num;
hp = 10;
this.littleId = littleId;
count = 0;
if(!(id==1&&(littleId==4||littleId==3)))
setPosition(data.getNpcPosition()[num][2]+WestGameCanvas.mapX,data.getNpcPosition()[num][3]+WestGameCanvas.mapY);
if(id==0||id == 3||(id == 1&&(littleId==1||littleId==2))){
preNpcState =npcState = 2;
if(id==0||id == 3)
setCurrSequence(0,4);
switch(id){
case 0:
speed = data.getNpcKind()[littleId][3];
break;
case 3:
speed = data.getBossKind()[littleId][3];
break;
case 1:
speed = data.getCloundKind()[littleId][3];
if(littleId==2){
for(int i = data.getUnDownRange().length-1;i>=0;i--){
if(data.getUnDownRange()[i][0]==num){
up = data.getUnDownRange()[i][2];
down = data.getUnDownRange()[i][1];
break;
}
}
}
break;
}
}
if(id == 4){
preNpcState =npcState = 2;
}
if(id==2){
int[] useFrameSequence = { data.getNpcPosition()[num][1]};
setFrameSequence(useFrameSequence);
}
}
//TODO moveSelf
void moveSelf(Player_West player){
if(id==1&&(littleId==4||littleId==5)){
count++;
if(count>30|| x < -srcFrameWidth || x > WestGameCanvas.screenWidth) {
num = -1;
return;
}
}
else if((-WestGameCanvas.mapX+WestGameCanvas.screenWidth<data.getNpcPosition()[num][4]
||-WestGameCanvas.mapX>data.getNpcPosition()[num][5]+srcFrameWidth)&&id!=2){
num = -1;
return;
}
if(id==0||id == 3){
if(hp<=0&&(preNpcState&4)!=0&&getFrame()==frameSequence.length-1){
if(x-WestGameCanvas.mapX>data.getNpcPosition()[num][5]){
npcState=(1|npcState);
x = data.getNpcPosition()[num][5] + WestGameCanvas.mapX;
}
else if(x-WestGameCanvas.mapX<data.getNpcPosition()[num][4]){
npcState=npcState - (1&npcState);
x = data.getNpcPosition()[num][4] + WestGameCanvas.mapX;
}
if(id == 3){
WestGameCanvas.gameState=2;
}
return;
}
npcMidX = (srcFrameWidth>>1)+x;
nextFrame();
if((4&preNpcState)!=0&&getFrame()==0)
setFrame(frameSequence.length-1);
if(hp<=0){
npcState = (1&preNpcState)+4;
}
if(preNpcState!=npcState){
switch(254&npcState){
case 2:
if(id==0)
speed = data.getNpcKind()[littleId][3];
if(id==3)
speed = data.getBossKind()[littleId][3];
setCurrSequence(0,4);
count = 0;
break;
case 4:
speed = 0;
setCurrSequence(12,4);
count = 1;
WestGameCanvas.score += data.getNpcKind()[littleId][6];
break;
case 8:
speed = 0;
setCurrSequence(4,5);
count = getFrameSequenceLength() - 1;
break;
case 16:
speed = 0;
setCurrSequence(9,3);
count = getFrameSequenceLength() - 1;
break;
case 32:
if(id==0)
speed = -data.getNpcKind()[littleId][3];
if(id==3)
speed = -data.getBossKind()[littleId][3];
setCurrSequence(0,4);
if((254&preNpcState)!=32)
count = 3;
break;
}
preNpcState = npcState;
}
}
if((id==0||(id==1&&littleId==1)||id == 3)){
x+=speed;
if(x-WestGameCanvas.mapX>=data.getNpcPosition()[num][5]||x-WestGameCanvas.mapX<=data.getNpcPosition()[num][4]){
if((2&preNpcState)!=0){
if(x-WestGameCanvas.mapX>data.getNpcPosition()[num][5]){
npcState=(1|npcState);
x = data.getNpcPosition()[num][5] + WestGameCanvas.mapX;
}
else if(x-WestGameCanvas.mapX<data.getNpcPosition()[num][4]){
npcState=npcState - (1&npcState);
x = data.getNpcPosition()[num][4] + WestGameCanvas.mapX;
}
if(id == 1){
speed = -speed;
}
}
if((32&preNpcState) != 0)
speed = 0;
}
}
if(id==1&&littleId==2){
y += speed;
if(y-WestGameCanvas.mapY>=up||y-WestGameCanvas.mapY<=down){
speed = -speed;
}
}
if(id==0||id==3){
if(player.x-WestGameCanvas.mapX<data.getNpcPosition()[num][5]
&&player.x-WestGameCanvas.mapX>data.getNpcPosition()[num][4]){
playerMidX = data.getPlayerRec()[player.frameSequence[player.getFrame()]][4]+player.x;
if(id==0)
npcMidX = data.NpcFrame(littleId)[frameSequence[getFrame()]][4]+x;
if(id==3)
npcMidX = data.BossFrame(littleId)[frameSequence[getFrame()]][4]+x;
if((4&npcState)==0){
if(playerMidX>npcMidX){
npcState = (254&npcState);
}else{
npcState = (1|npcState);
}
}
if(Math.abs(playerMidX-npcMidX)<=20&&(2&preNpcState)!=0){
npcState = 8+(1&preNpcState);
}
if((56&preNpcState)!=0){
if(count<0){
if((48&preNpcState)!=0)
npcState = 2+(1&preNpcState);
if((8&preNpcState)!=0)
npcState = 32+(1&preNpcState);
}
count --;
}
}else{
if((56&npcState)!=0){
npcState = 2+(1&preNpcState);
}
}
}
if(id == 4){//2石头在地上 4石头在手上 8石头在空中){
if(npcState==8){
move(data.getStoneKind()[0][3],data.getStoneKind()[0][4]);
}
if(npcState==9){
move(-data.getStoneKind()[0][3],data.getStoneKind()[0][4]);
}
if((8&npcState)!=0){
if(y>=data.getNpcPosition()[num][3]+WestGameCanvas.mapY){
y = data.getNpcPosition()[num][3]+WestGameCanvas.mapY;
npcState = 2;
}
if(x-WestGameCanvas.mapX<=data.getNpcPosition()[num][4]){
x = data.getNpcPosition()[num][4] + WestGameCanvas.mapX;
}
if(x-WestGameCanvas.mapX>=data.getNpcPosition()[num][5]){
x = data.getNpcPosition()[num][5] + WestGameCanvas.mapX;
}
}
}
}
void paintSelf(Graphics g){
if(id==0||id==3){
g.setClip(0,0,WestGameCanvas.screenWidth,WestGameCanvas.screenHeight);
g.setColor(0xff0000);
if(npcMidX>0)//屏掉变量为0在屏幕上显示的状况
g.fillRect(npcMidX-20,y-3,hp<<2,3);
}
if(!(id==1&&(littleId==4||littleId==5)
&&count>20&&(1&count)==0))
paint(g);
}
/**
* 设置动画序列
*
* @param imgIndex
* 从第几张图片开始
* @param totalNum
* 连续设置多少张
*/
private void setCurrSequence(int imgIndex, int totalNum) {
int array[] = new int[totalNum];
for (int i = 0; i < totalNum; i++) {
if ((1&npcState)==0)
array[i] = data.getNpcFrame()[imgIndex + i] + 9;
else{
array[i] = data.getNpcFrame()[imgIndex + i];
if(i == 0)
speed = -speed;
}
}
setFrameSequence(array);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -