📄 mariomainsprite.java
字号:
rect2.x=i*16;
rect2.y=yTile1*16;
if(LPRect.IntersectRect(rect1,rect2))
{
isCheck = true;
}
}
if(isCheck)
{
if(((this.judgeMap.mapArray[yTile2][i]>>8)&0x10)==0x10)
{
rect2.x=i*16;
rect2.y=yTile2*16;
if(LPRect.IntersectRect(rect1,rect2))
{
return true;
}
}
}
}
if(((this.judgeMap.mapArray[yTile1][i]>>8)&0x04)==0x04)
{
rect2.x = i * 16;
rect2.y = yTile1 * 16;
if (LPRect.IntersectRect(rect1, rect2))
{
return true;
}
}
if ( ( (this.judgeMap.mapArray[yTile2][i] >> 8) & 0x04) == 0x04)
{
rect2.x = i * 16;
rect2.y = yTile2 * 16;
if (LPRect.IntersectRect(rect1, rect2))
{
return true;
}
}
if ( ( (this.judgeMap.mapArray[yTile3][i] >> 8) & 0x04) == 0x04)
{
rect2.x = i * 16;
rect2.y = yTile3 * 16;
if (LPRect.IntersectRect(rect1, rect2))
{
return true;
}
}
}
return false;
}
private void fire()
{
if(isLeft)
{
gm.createBullet(x+16,y+16,-(MOVE_SPEED+4),0);
}
else
{
gm.createBullet(x+16,y+16,(MOVE_SPEED+4),0);
}
}
private boolean checkSpriteCollisionVertical()
{
int i;
if (mainSpriteState == SMALL_SPRITE)
{
if (dy > 0)
{
isJumpOver = true;
switch(gm.gameState)
{
case MarioGameManage.GAMESTATE_GAMELOOP:
for(i=gm.brick.length-1;i>=0;--i)
{
if(!gm.brick[i].isHidden)
{
if(((y+16)<=gm.brick[i].y)&&
((y+dy+16)>=gm.brick[i].y)
&&(x>=gm.brick[i].x-13)&&(x<=gm.brick[i].x+10))
{
dy=gm.brick[i].y-(y+16);
allAction&=~LPKeyMask.MASK_KEY_UP_FLAG;
return true;
}
}
}
for(i=gm.stick.length-1;i>=0;--i)
{
if(!gm.stick[i].isHidden)
{
if(((y+16)<=gm.stick[i].y)&&
((y+dy+16)>=gm.stick[i].y)
&&(x>=gm.stick[i].x-13)&&(x<=gm.stick[i].x+42))
{
gm.stick[i].isMainSpriteMove=true;
gm.stick[i].isDown = true;
dy=gm.stick[i].y-(y+16);
this.allAction&=~LPKeyMask.MASK_KEY_UP_FLAG;
return true;
}
else
{
gm.stick[i].isMainSpriteMove=false;
gm.stick[i].isDown = false;
}
}
}
for(i=gm.bridge.length-1;i>=0;--i)
{
if(!gm.bridge[i].isHidden)
{
if(((y+16)<=gm.bridge[i].y)&&
((y+dy+16)>=gm.bridge[i].y)
&&(x>=gm.bridge[i].x-13)&&(x<=gm.bridge[i].x+10))
{
gm.bridge[i].isDown=true;
dy=gm.bridge[i].y-(y+16);
allAction&=~LPKeyMask.MASK_KEY_UP_FLAG;
return true;
}
}
}
break;
}
}
else if(dy<0)
{
switch(gm.gameState)
{
case MarioGameManage.GAMESTATE_GAMELOOP:
for(i=gm.brick.length-1;i>=0;--i)
{
if(((y)>=gm.brick[i].y+16)&&
((y+dy)<=gm.brick[i].y+16)
&&(x>=gm.brick[i].x-13)&&(x<=gm.brick[i].x+10))
{
dy=gm.brick[i].y+16-y;
if(isJumpOver)
{
if(gm.brick[i].frameCnt!=0)
{
changeUpSpriteState();
}
gm.brick[i].createGem(gm);
isJumpOver=false;
}
allAction&=~LPKeyMask.MASK_KEY_UP_FLAG;
return true;
}
}
break;
}
}
else
{
isJumpOver = true;
}
}
else
{
if (dy > 0)
{
isJumpOver = true;
switch(gm.gameState)
{
case MarioGameManage.GAMESTATE_GAMELOOP:
for(i=gm.brick.length-1;i>=0;--i)
{
if(!gm.brick[i].isHidden)
{
if(((y+32)<=gm.brick[i].y)&&
((y+dy+32)>=gm.brick[i].y)
&&(x>=gm.brick[i].x-20)&&(x<=gm.brick[i].x+6))
{
dy=gm.brick[i].y-(y+32);
allAction&=~LPKeyMask.MASK_KEY_UP_FLAG;
return true;
}
}
}
for(i=gm.stick.length-1;i>=0;--i)
{
if(!gm.stick[i].isHidden)
{
if(((y+32)<=gm.stick[i].y)&&
((y+dy+32)>=gm.stick[i].y)
&&(x>=gm.stick[i].x-20)&&(x<=gm.stick[i].x+38))
{
gm.stick[i].isMainSpriteMove=true;
dy=gm.stick[i].y-(y+32);
this.allAction&=~LPKeyMask.MASK_KEY_UP_FLAG;
return true;
}
else
{
gm.stick[i].isMainSpriteMove=false;
}
}
}
for(i=gm.bridge.length-1;i>=0;--i)
{
if(!gm.bridge[i].isHidden)
{
if(((y+32)<=gm.bridge[i].y)&&
((y+dy+32)>=gm.bridge[i].y)
&&(x>=gm.bridge[i].x-20)&&(x<=gm.bridge[i].x+6))
{
gm.bridge[i].isDown = true;
dy=gm.bridge[i].y-(y+32);
allAction&=~LPKeyMask.MASK_KEY_UP_FLAG;
return true;
}
}
}
break;
}
}
else if(dy<0)
{
switch(gm.gameState)
{
case MarioGameManage.GAMESTATE_GAMELOOP:
for(i=gm.brick.length-1;i>=0;--i)
{
if(((y)>=gm.brick[i].y+16)&&
((y+dy)<=gm.brick[i].y+16)
&&(x>=gm.brick[i].x-20)&&(x<=gm.brick[i].x+6))
{
dy=gm.brick[i].y+16-y;
if(isJumpOver)
{
gm.brick[i].createGem(gm);
isJumpOver=false;
}
allAction&=~LPKeyMask.MASK_KEY_UP_FLAG;
return true;
}
}
break;
}
}
else
{
isJumpOver = true;
}
}
return false;
}
private boolean checkSpriteCollisionHorizon()
{
if(gm.gameState==MarioGameManage.GAMESTATE_GAMELOOP)
{
int i;
if(mainSpriteState==SMALL_SPRITE)
{
rect1.x=x;
rect1.y=y;
rect1.dx=16;
rect1.dy=16;
}
else
{
rect1.x=x+6;
rect1.y=y;
rect1.dx=16;
rect1.dy=32;
}
for(i=gm.tortoise.length-1;i>=0;--i)
{
if(!gm.tortoise[i].isHidden)
{
if(gm.tortoise[i].isPushable)
{
rect2.x=gm.tortoise[i].x;
rect2.y=gm.tortoise[i].y+8;
rect2.dx=16;
rect2.dy=16;
if(LPRect.IntersectRect(rect1,rect2))
{
gm.tortoise[i].changeState();
}
}
}
}
rect1.x+=dx;
for(i=gm.brick.length-1;i>=0;--i)
{
if(!gm.brick[i].isHidden)
{
rect2.x=gm.brick[i].x;
rect2.y=gm.brick[i].y;
rect2.dx=16;
rect2.dy=16;
if(LPRect.IntersectRect(rect1,rect2))
{
return true;
}
}
}
}
return false;
}
private void checkBulletDamage()
{
int i,j;
rect1.dx = 8;
rect1.dy = 8;
rect2.dx = 16;
rect2.dy = 16;
for(i=gm.bullet.length-1;i>=0;--i)
{
label_1:
if(!gm.bullet[i].isHidden)
{
rect1.x = gm.bullet[i].x;
rect1.y = gm.bullet[i].y;
for(j=gm.enemy.length-1;j>=0;--j)
{
if(!gm.enemy[j].isHidden)
{
if(gm.enemy[j].isCheck)
{
rect2.x=gm.enemy[j].x;
rect2.y=gm.enemy[j].y;
if(LPRect.IntersectRect(rect1,rect2))
{
gm.enemy[j].changeDirection();
gm.bullet[i].isHidden = true;
break label_1;
}
}
}
}
for(j=gm.tortoise.length-1;j>=0;--j)
{
if(!gm.tortoise[j].isHidden)
{
if(gm.tortoise[j].isCheck)
{
rect2.x = gm.tortoise[j].x;
rect2.y = gm.tortoise[j].y+8;
if(LPRect.IntersectRect(rect1,rect2))
{
gm.tortoise[j].changeDirection();
gm.bullet[i].isHidden = true;
break label_1;
}
}
}
}
}
}
}
public void init()
{
x = 0;
y = 0;
dy = 0;
dx = 0;
bgdx = 0;
bgdy = 0;
isLeft = false;
allAction = 0;
mainSpriteState = SMALL_SPRITE;
distance = 0;
isJumpOver = true;
isProtected = false;
isHidden = false;
}
private void changeUpSpriteState()
{
int i;
rect1.x = x;
rect1.y = y-20;
rect1.dx = 16;
rect1.dy = 16;
rect2.dx = 16;
rect2.dy = 16;
for(i=gm.mashRooms.length-1;i>=0;--i)
{
if(!gm.mashRooms[i].isHidden)
{
rect2.x = gm.mashRooms[i].x;
rect2.y = gm.mashRooms[i].y;
if(LPRect.IntersectRect(rect1,rect2))
{
gm.mashRooms[i].changeDirection();
}
}
}
for(i=gm.enemy.length-1;i>=0;--i)
{
if(!gm.enemy[i].isHidden)
{
if(gm.enemy[i].isCheck)
{
rect2.x=gm.enemy[i].x;
rect2.y=gm.enemy[i].y;
if(LPRect.IntersectRect(rect1,rect2))
{
gm.enemy[i].changeDirection();
}
}
}
}
for(i=gm.tortoise.length-1;i>=0;--i)
{
if(!gm.tortoise[i].isHidden)
{
if(gm.tortoise[i].isCheck)
{
rect2.x=gm.tortoise[i].x;
rect2.y=gm.tortoise[i].y;
if(LPRect.IntersectRect(rect1,rect2))
{
gm.tortoise[i].changeDirection();
}
}
}
}
}
public void readData(DataInputStream dis)
throws java.io.IOException
{
super.readData(dis);
dx = dis.readInt();
dy = dis.readInt();
bgdx = dis.readInt();
bgdy = dis.readInt();
growCnt = dis.readInt();
//allAction = dis.readInt();
mainSpriteState = dis.readInt();
becomeCnt = dis.readInt();
protectInterval = dis.readInt();
protectCnt = dis.readInt();
isLeft = dis.readBoolean();
isProtected = dis.readBoolean();
deadCnt = dis.readInt();
distance = dis.readInt();
}
public void writeData(DataOutputStream dos)
throws java.io.IOException
{
super.writeData(dos);
dos.writeInt(dx);
dos.writeInt(dy);
dos.writeInt(bgdx);
dos.writeInt(bgdy);
dos.writeInt(growCnt);
dos.writeInt(mainSpriteState);
dos.writeInt(becomeCnt);
dos.writeInt(protectInterval);
dos.writeInt(protectCnt);
dos.writeBoolean(isLeft);
dos.writeBoolean(isProtected);
dos.writeInt(deadCnt);
dos.writeInt(distance);
}
// property
//pubilc
public int dx;
public int dy;
public int bgdx;
public int bgdy;
public LPMaps judgeMap;
public int growCnt;
public int allAction;
public int mainSpriteState;
public int becomeCnt;
//private
private LPRect rect1 = new LPRect();
private LPRect rect2 = new LPRect();
private boolean isJumpOver;
private int protectInterval;
private int protectCnt;
private MarioGameManage gm;
private boolean isLeft;
private boolean isProtected;
private int deadCnt;
private int distance;
//final
private static final int MOVE_SPEED = 6;
// main sprite's state
public static final int SMALL_SPRITE = 0x01;
public static final int NORMAL_SPRITE = 0x02;
public static final int FIRE_SPRITE = 0x04;
public static final int GROW_SPRITE = 0x08;
public static final int BECOME_FIRE = 0x10;
public static final int DEAD_SPRITE = 0x20;
public static final int BECOME_SMALL = 0x40;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -