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

📄 mariogamecanvas.java

📁 一个很好的j2ms的元代码不是很专业的很适合初学者的哦
💻 JAVA
📖 第 1 页 / 共 2 页
字号:

    switch(gm.menu.whichActive)
    {
      case LPMenu.MENU_NEW_GAME:
        g.setColor(255,0,0);
        g.drawString("新游戏",(width-font.stringWidth("新游戏"))/2,
                     menuOffset+font.getHeight()*0,g.LEFT|g.TOP);
        g.setColor(255,255,255);
        g.drawString("载入进度",(width-font.stringWidth("载入进度"))/2,
                     menuOffset+font.getHeight()*1,g.LEFT|g.TOP);
        g.setColor(255,255,255);
        if(gm.menu.isVolOn)
        {
          g.drawString("声音开",(width-font.stringWidth("声音开"))/2,
                       menuOffset+font.getHeight()*2,g.LEFT|g.TOP);
        }
        else
        {
          g.drawString("声音关",(width-font.stringWidth("声音关"))/2,
                       menuOffset+font.getHeight()*2,g.LEFT|g.TOP);
        }
        g.setColor(255,255,255);
        g.drawString("退出",(width-font.stringWidth("退出"))/2,
                     menuOffset+font.getHeight()*3,g.LEFT|g.TOP);
        g.setColor(255,255,255);
        g.drawString("关于",(width-font.stringWidth("关于"))/2,
                     menuOffset+font.getHeight()*4,g.LEFT|g.TOP);
        break;
      case LPMenu.MENU_LOAD_GAME:
        g.setColor(255,255,255);
        g.drawString("新游戏",(width-font.stringWidth("新游戏"))/2,
                     menuOffset+font.getHeight()*0,g.LEFT|g.TOP);
        g.setColor(255,0,0);
        g.drawString("载入进度",(width-font.stringWidth("载入进度"))/2,
                     menuOffset+font.getHeight()*1,g.LEFT|g.TOP);

        g.setColor(255,255,255);
        if(gm.menu.isVolOn)
        {
          g.drawString("声音开",(width-font.stringWidth("声音开"))/2,
                       menuOffset+font.getHeight()*2,g.LEFT|g.TOP);
        }
        else
        {
          g.drawString("声音关",(width-font.stringWidth("声音关"))/2,
                       menuOffset+font.getHeight()*2,g.LEFT|g.TOP);
        }
        g.setColor(255,255,255);
        g.drawString("退出",(width-font.stringWidth("退出"))/2,
                     menuOffset+font.getHeight()*3,g.LEFT|g.TOP);
        g.setColor(255,255,255);
        g.drawString("关于",(width-font.stringWidth("关于"))/2,
                     menuOffset+font.getHeight()*4,g.LEFT|g.TOP);

        break;
      case LPMenu.MENU_VOL:

        g.setColor(255,255,255);
        g.drawString("新游戏",(width-font.stringWidth("新游戏"))/2,
                     menuOffset+font.getHeight()*0,g.LEFT|g.TOP);
        g.setColor(255,255,255);
        g.drawString("载入进度",(width-font.stringWidth("载入进度"))/2,
                     menuOffset+font.getHeight()*1,g.LEFT|g.TOP);
        g.setColor(255,0,0);
        if(gm.menu.isVolOn)
        {
          g.drawString("声音开",(width-font.stringWidth("声音开"))/2,
                       menuOffset+font.getHeight()*2,g.LEFT|g.TOP);
        }
        else
        {
          g.drawString("声音关",(width-font.stringWidth("声音关"))/2,
                       menuOffset+font.getHeight()*2,g.LEFT|g.TOP);
        }
        g.setColor(255,255,255);
        g.drawString("退出",(width-font.stringWidth("退出"))/2,
                     menuOffset+font.getHeight()*3,g.LEFT|g.TOP);
        g.setColor(255,255,255);
        g.drawString("关于",(width-font.stringWidth("关于"))/2,
                     menuOffset+font.getHeight()*4,g.LEFT|g.TOP);

        break;
      case LPMenu.MENU_EXIT:

        g.setColor(255,255,255);
        g.drawString("新游戏",(width-font.stringWidth("新游戏"))/2,
                     menuOffset+font.getHeight()*0,g.LEFT|g.TOP);
        g.setColor(255,255,255);
        g.drawString("载入进度",(width-font.stringWidth("载入进度"))/2,
                     menuOffset+font.getHeight()*1,g.LEFT|g.TOP);
        g.setColor(255,255,255);
        if(gm.menu.isVolOn)
        {
          g.drawString("声音开",(width-font.stringWidth("声音开"))/2,
                       menuOffset+font.getHeight()*2,g.LEFT|g.TOP);
        }
        else
        {
          g.drawString("声音关",(width-font.stringWidth("声音关"))/2,
                       menuOffset+font.getHeight()*2,g.LEFT|g.TOP);
        }
        g.setColor(255,0,0);
        g.drawString("退出",(width-font.stringWidth("退出"))/2,
                     menuOffset+font.getHeight()*3,g.LEFT|g.TOP);
        g.setColor(255,255,255);
        g.drawString("关于",(width-font.stringWidth("关于"))/2,
                     menuOffset+font.getHeight()*4,g.LEFT|g.TOP);

        break;
      case LPMenu.MENU_ABOUT:

        g.setColor(255,255,255);
        g.drawString("新游戏",(width-font.stringWidth("新游戏"))/2,
                     menuOffset+font.getHeight()*0,g.LEFT|g.TOP);
        g.setColor(255,255,255);
        g.drawString("载入进度",(width-font.stringWidth("载入进度"))/2,
                     menuOffset+font.getHeight()*1,g.LEFT|g.TOP);

        g.setColor(255,255,255);
        if(gm.menu.isVolOn)
        {
          g.drawString("声音开",(width-font.stringWidth("声音开"))/2,
                       menuOffset+font.getHeight()*2,g.LEFT|g.TOP);
        }
        else
        {
          g.drawString("声音关",(width-font.stringWidth("声音关"))/2,
                       menuOffset+font.getHeight()*2,g.LEFT|g.TOP);
        }
        g.setColor(255,255,255);
        g.drawString("退出",(width-font.stringWidth("退出"))/2,
                     menuOffset+font.getHeight()*3,g.LEFT|g.TOP);
        g.setColor(255,0,0);
        g.drawString("关于",(width-font.stringWidth("关于"))/2,
                     menuOffset+font.getHeight()*4,g.LEFT|g.TOP);

        break;
    }
  }

  private void drawPauseScreen(Graphics g)
  {
    g.setFont(font);
    g.setClip(0,0,width,height);
    g.setColor(0,0,0);
    g.fillRect(0,0,width,height);
    g.setColor(255,0,0);
    g.drawString("暂停中……",(width-font.stringWidth("暂停中……"))/2,
                 height/2,g.LEFT|g.TOP);
  }


  private void drawGameOverScreen(Graphics g)
  {
    dm.drawMaps(g,this.map);
    g.setClip(0,0,width,height);
    g.setFont(font);
    g.setColor(255,0,0);
    g.drawString("游戏结束",(width-font.stringWidth("游戏结束"))/2,
                 height/2,g.LEFT|g.TOP);
  }


  public void stop()
  {
    gameThread=null;
  }

  public void start()
  {
    gm.menu.allAction=0;
    switch(gm.gameState)
    {
      case MarioGameManage.GAMESTATE_MENU:
        if(gm.menu.isVolOn)
        {
          gm.bgPlayer.play();
        }
        break;
      case MarioGameManage.GAMESTATE_GAMELOOP:
      case MarioGameManage.GAMESTATE_PAUSE:
      case MarioGameManage.GAMESTATE_REINIT:
        break;
    }
    gameThread=new Thread(this);
    gameThread.start();
  }

  public boolean isPressStar = false;
  protected void keyPressed(int keyCode)
  {
    if(gm.gameState==MarioGameManage.GAMESTATE_GAMELOOP)
    {
      if(keyCode==Canvas.KEY_STAR)
      {
        if(!isPressStar)
        {
          isPressStar = true;
        }
      }
    }
    gm.judgeKeyCode(keyCode,getGameAction(keyCode));
  }

  protected void keyReleased(int keyCode)
  {
    gm.freeKey(keyCode,getGameAction(keyCode));
  }

  public void saveCurrentState()
  {
    try
    {
      ByteArrayOutputStream baos=new ByteArrayOutputStream();
      DataOutputStream dos=new DataOutputStream(baos);
      int i,j;
      dos.writeInt(gm.goldNum);
      dos.writeInt(gm.mainSprite.judgeMap.x);
      dos.writeInt(gm.mainSprite.judgeMap.y);

      for(i=gm.mainSprite.judgeMap.mapArray.length-1;i>=0;--i)
      {
        for(j=gm.mainSprite.judgeMap.mapArray[i].length-1;j>=0;--j)
        {
          dos.writeChar(gm.mainSprite.judgeMap.mapArray[i][j]);
        }
      }
      dos.writeInt(gm.brick.length);
      for(i=gm.brick.length-1;i>=0;--i)
      {
        gm.brick[i].writeData(dos);
      }
      dos.writeInt(gm.brokenBrick.length);
      for(i=gm.brokenBrick.length-1;i>=0;--i)
      {
        gm.brokenBrick[i].writeData(dos);
      }
      dos.writeInt(gm.bullet.length);
      for(i=gm.bullet.length-1;i>=0;--i)
      {
        gm.bullet[i].writeData(dos);
      }
      dos.writeInt(gm.enemy.length);
      for(i=gm.enemy.length-1;i>=0;--i)
      {
        gm.enemy[i].writeData(dos);
      }
      dos.writeInt(gm.tortoise.length);
      for(i=gm.tortoise.length-1;i>=0;--i)
      {
        gm.tortoise[i].writeData(dos);
      }


      dos.writeInt(gm.bridge.length);
      for(i=gm.bridge.length-1;i>=0;--i)
      {
        gm.bridge[i].writeData(dos);
      }
      dos.writeInt(gm.gold.length);
      for(i=gm.gold.length-1;i>=0;--i)
      {
        gm.gold[i].writeData(dos);
      }
      dos.writeInt(gm.mashRooms.length);
      for(i=gm.mashRooms.length-1;i>=0;--i)
      {
        gm.mashRooms[i].writeData(dos);
      }
      dos.writeInt(gm.flowers.length);
      for(i=gm.flowers.length-1;i>=0;--i)
      {
        gm.flowers[i].writeData(dos);
      }

      dos.writeInt(gm.stick.length);
      for(i=gm.stick.length-1;i>=0;--i)
      {
        gm.stick[i].writeData(dos);
      }
      dos.writeInt(gm.staticGold.length);
      for(i=gm.staticGold.length-1;i>=0;--i)
      {
        gm.staticGold[i].writeData(dos);
      }
      dos.writeInt(gm.ugGold.length);
      for(i=gm.ugGold.length-1;i>=0;--i)
      {
        gm.ugGold[i].writeData(dos);
      }
      dos.writeInt(gm.ugBrick.length);
      for(i=gm.ugBrick.length-1;i>=0;--i)
      {
        gm.ugBrick[i].writeData(dos);
      }
      gm.mainSprite.writeData(dos);
      this.record.SetRecord(1,baos.toByteArray());
      dos.close();
      baos.close();
    }
    catch(Exception e)
    {
      System.out.println("Save Data error");
    }
  }



  public MarioMIDlet midlet;
  public static int width;
  public static int height;
  public static Random rand=new Random(System.currentTimeMillis());
  public LPSaveRecord record=new LPSaveRecord("lipeng_Mario");

  public Command mainMenu=new Command("菜单",Command.OK,1);
  public Command back=new Command("返回",Command.BACK,2);
  public boolean isSaveState;
  public int saveGameState;
  public MarioGameManage gm;
  public LPMaps map;
  public char mapData[][]=null;
  //private
  private volatile Thread gameThread=null;
  private long startTime;
  private long endTime;
  private LPDrawManage dm;
  private Font font=Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_BOLD,
                                 Font.SIZE_LARGE);
// image resource

  private LPImageManage imMap;
  private LPImageManage imMainSmall16;
  private LPImageManage imMainNormal32;
  private LPImageManage imMainFire32;
  private LPImageManage imSprite8;
  private LPImageManage imSprite16;
  private LPImageManage imEnemy24;
  private LPImageManage imSprite48;
  //final
  private static final int FRAME_TIME=80;

  static final char[][]  level_1_map=
    {
    {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
    {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
    {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
    {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0011,0x0013,0x0015,0x0017,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
    {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0012,0x0014,0x0016,0x0018,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
    {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0f26,0x0f26,0x0f26,0x0000,0x0000,0x0000,0x0000,},
    {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
    {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0011,0x0013,0x0017,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
    {0x0019,0x0019,0x0019,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0012,0x0014,0x0018,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
    {0x001a,0x001a,0x001a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0f26,0x0f26,0x0f26,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
    {0x001a,0x001f,0x001a,0x0000,0x0011,0x0013,0x0015,0x0015,0x0017,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0702,0x0702,0x0702,0x0702,0x0702,0x0702,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
    {0x001c,0x001c,0x001c,0x0019,0x0012,0x0014,0x0016,0x0016,0x0018,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
    {0x001a,0x001a,0x001a,0x001a,0x001a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
    {0x001a,0x001a,0x001a,0x001f,0x001a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
    {0x001c,0x001c,0x001c,0x001c,0x001c,0x0019,0x0019,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0f26,0x0f26,0x0f26,0x0f26,0x0f26,},
    {0x001d,0x001a,0x001a,0x001a,0x001a,0x001a,0x001a,0x0000,0x0000,0x0000,0x0f26,0x0f26,0x0f26,0x0f26,0x0000,0x0000,0x0000,0x0000,0x0000,0x0f26,0x0f26,0x0000,0x0000,0x0000,0x0f26,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
    {0x001e,0x001a,0x001a,0x001a,0x001a,0x001a,0x001a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x002b,0x0000,0x0703,0x0705,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
    {0x001e,0x001a,0x001a,0x001a,0x001d,0x001a,0x001a,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x002c,0x0000,0x0704,0x0706,0x0000,0x0029,0x0029,0x0029,0x0029,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,},
    {0x001e,0x001a,0x001a,0x001a,0x001e,0x001a,0x001a,0x0000,0x0000,0x000d,0x000e,0x000f,0x0010,0x0000,0x002a,0x0000,0x0704,0x0706,0x0000,0x0029,0x0029,0x0029,0x0029,0x0000,0x0000,0x0000,0x0000,0x0027,0x0027,0x0027,0x0027,0x0027,},
    {0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0701,0x0228,0x0228,0x0228,0x0228,0x0228,},
    };
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -