⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mariomainsprite.java

📁 j2me 上的 超级马力游戏 代码 超级马力游戏 代码
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
          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 + -