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

📄 framecanvas.java

📁 J2ME手机游戏的矿架程序
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
  //来电处理
  protected void hideNotify()
  {
    if(game_state!=GAME_PAUSE)
    {
       telState=game_state;
    }
    game_state=GAME_PAUSE;

    if(isMidiOpen && midi!=null)//close the midi
    {
       midi.ClearAllMidi();
       midi=null;
       isMidiOpen=false;
    }
  }

  protected void showNotify(){}
//==============================================================================
  protected final void paint(Graphics g)
  {
    g.setFont(defaultFont);
    switch (game_state)
    {
      case GAME_RUN:
      case GAME_MAN_DEAD:
           g.translate(-mapX,-mapY);
//           System.out.println("p begin");
           _drawMap(g);
//           System.out.println("p begin2");
           _drawMonster(g);
//           System.out.println("p begin3");
           _drawMan(g);
//           System.out.println("p begin4");
           if(game_state==GAME_MAN_DEAD)
           {
              g.translate(mapX,mapY);
              g.setColor(0);
              g.fillRect((WIDTH-120)/2,(HEIGHT-32)/2,120,32);
              g.setColor(0xffd200);
              g.drawString("失败!请重新开始.",
                          (WIDTH-defaultFont.stringWidth("sorry you die挂了!"))/2,
                          (HEIGHT-20)/2,20);
              _draw_yes_or_no(g,0);
           }
//           System.out.println("p over");
           break;
      case GAME_TALK:
//           System.out.println("game talk 0");
           g.translate(-mapX,-mapY);
           _drawMap(g);
//           System.out.println("game talk 1");
           _drawMan(g);
//           System.out.println("game talk 2");
           _do_man();
//           System.out.println("game talk 3");
           _brainMoveMap_manInMap_goMiddle();
           if(_inMap_canGo_down(man.x,man.y,man.w,man.h)==0)
              _drawTalk(g);
//           System.out.println("game talk 4");
           break;
      case GAME_SMALL_MAP:
           _draw_GAME_SMALL_MAP(g);
           break;
      case GAME_SUB_MENU:
           _draw_GAME_SUB_MENU(g);
           break;
      case GAME_MAIN_MENU:
           _draw_GAME_MAIN_MENU(g);
           break;
      case GAME_LOAD_SOUND:
           _draw_GAME_LOAD_SOUND(g);
           break;
      case GAME_HELP:
           _draw_GAME_HELP(g);
           break;
      case GAME_LOAD:
           _draw_GAME_LOAD(g);
           break;
      case GAME_LOADING:
           _draw_GAME_LOADING(g);
           break;
      case GAME_ABOUT:
           _draw_GAME_ABOUT(g);
           break;
      case GAME_PAUSE:
           _draw_GAME_PAUSE(g);
           break;
      case GAME_ERROR: //游戏错误状态
           g.setColor(0xff0000);
           g.fillRect(0,0,WIDTH,HEIGHT);
           g.setColor(0);
           g.drawString("err: "+error, 0, 20, 20);
           g.drawString("game_state: "+errorS,0,40,20);
           g.drawString("eS: "+errorS1,0,60,20);
           break;
    }
    //debug========================================
    //debug========================================
    //debug========================================
//    g.setColor(0x0000ff);
//    g.drawString(   "x:"+man.x,20+mapX,20+mapY,20);
//    g.drawString(   "y:"+man.y,20+mapX,40+mapY,20);
//    g.setColor(0xff0000);
//    g.drawString("mapX:"+ mapX,20+mapX,60+mapY,20);
//    g.drawString("mapY:"+ mapY,20+mapX,80+mapY,20);
  }
//==============================================================================
  public final void run()
  {
    error = 1;
    long starttime = 0;
    long timetaken = 0;
    try
    {
      while(!quitGame)
      {
         starttime = System.currentTimeMillis();
         gameTime=(gameTime+1)%1999999;
//         System.out.println("run 0");
         switch(game_state)
         {
           default:
//                System.out.println("run !!!GAME_RUN");
                if(isMidiOpen)
                {
                   midi.ClearAllMidi();
                   midi=null;
                   isMidiOpen=false;
                }
                break;
           case GAME_RUN:
//                System.out.println("run GAME_RUN");
                if(PlaySound && !isMidiOpen)
                {
                   if(midi==null)
                   {
                      loadSound();
                   }
                   midi.play();
                   isMidiOpen=true;
                }

                _do_man();
                _brainMoveMap_manInMap_goMiddle();
                break;
         }
//         System.out.println("run 1");
         //repaint
         repaint();
         serviceRepaints();
//         System.out.println("run 2");
         //按键处理
         if(keyRepeat && key_delay==0)
         {
            keyProcess();
         }
         //按键时间控制
         if(key_delay > 0)
         {
            key_delay--;
         }
//         System.gc();
         //确定游戏帧数
         timetaken=System.currentTimeMillis()-starttime;
         if(timetaken < TIME_PER_FRAME)
         {
           gameThread.sleep(TIME_PER_FRAME - timetaken);
         }
      }
    }
    catch(Exception ex)
    {
          //打印错误信息,并在屏幕上显示
          System.out.println("err1:"+"|"+game_state+"|"+ex.toString());
          System.out.println("err2:"+"|"+game_state+"|"+error);
          errorS=""+game_state;
          errorS1=""+ex;
          game_state=GAME_ERROR;
          repaint();
          serviceRepaints();
          while(key!=KEY_NUM0)
          {
                game.exit();
          }
    }
    game.exit();//退出游戏
  }
//==============================================================================
  protected final void keyPressed(int key) //键按下
  {
    keyRepeat=true;
    this.key=key;
  }
//==============================================================================
  protected final void keyReleased(int key)
  {
     keyRepeat=false;

     switch(game_state)
     {
        case GAME_RUN:
             man.canJmp=1;
             if(_inMap_canGo_down(man.x,man.y,man.w,man.h)==0)
             {
                if((man.frame>3  && man.frame<10) //run
                    ||
                   (man.frame>17 && man.frame<22))//
                {
                    man.frame=0;
                }
             }
             break;
        case GAME_HELP:
             wordSp=2;
             break;
     }
  }
//==============================================================================
  private final void keyProcess()//按键处理
  {
    switch (game_state)
    {
      case GAME_RUN:
           if(key!=KEY_SOFTKEY1
                && key!=KEY_UP_ARROW &&
             (man.frame==15 || man.frame==16 || man.frame>35))
              break;
           _key_Run();
           break;
      case GAME_SMALL_MAP:
           switch(key)
           {
             case KEY_SOFTKEY2:
                  key_delay=init_key_delay;
                  goRun();
                  break;
             case KEY_UP_ARROW:
                  show_map_y+=4;
                  break;
             case KEY_DOWN_ARROW:
                  show_map_y-=4;
                  break;
             case KEY_RIGHT_ARROW:
                  show_map_x-=4;
                  break;
             case KEY_LEFT_ARROW:
                  show_map_x+=4;
                  break;
           }
           break;
      case GAME_TALK:
//           if(key==KEY_SOFTKEY1)
//           {
//              goRun();
//           }
//           else
           {
             for(byte i=0;i<2;i++)
             {
                 lp_strTalk++;
                 if(strTalk[lp_whichTalk][lp_strTalk+0]=="exit" ||
                    strTalk[lp_whichTalk][lp_strTalk+1]=="exit")
                 {
                    if(gate==7 && lp_whichTalk==6)
                    {
                      gate=1;
                      game_state=GAME_MAIN_MENU;
                    }
                    else
                    {
                      goRun();
                    }
                    break;
                 }
             }
             key_delay=(byte)(init_key_delay+3);
           }
           break;
      case GAME_SUB_MENU:
           key_delay=init_key_delay;
           _key_Sub_Menu();
           break;
      case GAME_MAIN_MENU:
           key_delay=init_key_delay;
           _key_Main_Menu();
           break;
      case GAME_HELP:
           key_delay=init_key_delay;
           _key_Game_Help();
           break;
      case GAME_LOAD:
           if(gameTime>40)
           {
             //go_main_menu
             key_delay=init_key_delay;
             menu_choose=0;
             game_state=GAME_MAIN_MENU;
           }
//           else if(key==KEY_NUM9)
//           {
//             key_delay=init_key_delay;
//             menu_choose=0;
//             game_state=GAME_MAIN_MENU;
//           }
           break;
      case GAME_MAN_DEAD:
           if(key==KEY_SOFTKEY1)
           {
              key_delay=init_key_delay;
              game_state=GAME_MAIN_MENU;
           }
           break;
      case GAME_ABOUT:
           if(key==KEY_SOFTKEY2)
           {
              game_state=GAME_MAIN_MENU;
           }
           break;
      case GAME_PAUSE:
           game_state=telState;
           break;
    }
  }
//******************************************************************************
//PAINT 区
   private void _draw_GAME_LOAD(Graphics g)
   {
     if(imgGameLogo==null)
     {
        try
        {
           imgLogo    = new Image[2];
           imgLogo[0] = Image.createImage("/logo1.png");
           imgLogo[1] = Image.createImage("/logo2.png");
           imgGameLogo= Image.createImage("/logo_game.png");
//           imgGameLogo= _loadPic(11592,"/logo_game.png");
           imgIs      = Image.createImage("/is.png");
           imgArrow   = Image.createImage("/arrow.png");
           imgMenuBack= Image.createImage("/menuBack.png");
        }
        catch(Exception e)
        {
           System.out.println("create logo Img error"+e);
        }
     }

     if(gameTime<20)
     {
       g.drawImage(imgLogo[0],(WIDTH-imgLogo[0].getWidth())/2,
                   (HEIGHT-imgLogo[0].getHeight())/2,20);
     }
     else if(gameTime<40)
     {
       g.setColor(0xffffff);
       g.fillRect(0,0,WIDTH,HEIGHT);
       g.drawImage(imgLogo[1],(WIDTH-imgLogo[1].getWidth())/2,
                   (HEIGHT-imgLogo[1].getHeight())/2,20);
     }
     else
     {
       g.drawImage(imgGameLogo,0,0,20);

//             if(gameTime%3==0)
       {
          g.setColor(0x00ff00);
          draw_CJC_Word(g,"任意键进入",
            (WIDTH-defaultFont.stringWidth("任意键进入"))/2,
             HEIGHT-defaultFont.getHeight()-2);
       }
     }
   }

   private void _draw_GAME_ABOUT(Graphics g)
   {
     String str_about_menu[]=new String[6];

     str_about_menu[0]="关于";
     str_about_menu[1]="123代理发行";
     str_about_menu[2]="发行商网站:";
     str_about_menu[3]="www.123.com.cn";
     str_about_menu[4]="客服电话:";
     str_about_menu[5]="123-123123";
//     str_about_menu[5]="发行商网站:";
//     str_about_menu[6]="www.airwap.com.cn";
//     str_about_menu[7]="内容提供:";
//     str_about_menu[8]="北京清华联版权所有.";

     g.setColor(0);
     g.fillRect(0,0,WIDTH,HEIGHT);
     g.setColor(0xffd200);
     _draw_str(g,str_about_menu);
     _draw_yes_or_no(g,1);
   }

   private void _draw_str(Graphics g,String str[])
   {
     int word_null_H=defaultFont.getHeight();
     for(int i=0;i<str.length;i++)
     {
        g.drawString(str[i],
                    (WIDTH -defaultFont.stringWidth(str[i]))/2,
                    (HEIGHT-(word_null_H+4)*str.length)/2+(word_null_H+4)*i,20);

     }
   }

   private void _draw_GAME_HELP(Graphics g)
   {
     g.setColor(0);
     g.fillRect(0,0,WIDTH,HEIGHT);

     String str_help_menu[]=new String[38];

     str_help_menu[ 0]="剧情简介:";
     str_help_menu[ 1]="剧情简介剧情简介";
     str_help_menu[ 2]="剧情简介剧情简介";
     str_help_menu[ 3]="剧情简介剧情简介";
     str_help_menu[ 4]="剧情简介剧情简介";
     str_help_menu[ 5]="剧情简介剧情简介";
     str_help_menu[ 6]="剧情简介剧情简介";
     str_help_menu[ 7]="剧情简介剧情简介";
     str_help_menu[ 8]="剧情简介剧情简介";
     str_help_menu[ 9]="剧情简介剧情简介";
     str_help_menu[10]="剧情简介剧情简介";
     str_help_menu[11]="剧情简介剧情简介";
     str_help_menu[12]="剧情简介剧情简介";
     str_help_menu[13]="剧情简介剧情简介";
     str_help_menu[14]="剧情简介剧情简介";
     str_help_menu[15]="剧情简介剧情简介";
     str_help_menu[16]="剧情简介剧情简介";
     str_help_menu[17]="剧情简介剧情简介";
     str_help_menu[18]="剧情简介剧情简介";
     str_help_menu[19]="剧情简介剧情简介";
     str_help_menu[20]="*************";
     str_help_menu[21]="按键设置:";
     str_help_menu[22]="上,下,左,右方向键";
     str_help_menu[23]="和2,4,6,8键控制";
     str_help_menu[24]="主角移动.";
     str_help_menu[25]="1,3键盘斜跳.";
     str_help_menu[26]="下方向键和5键为";
     str_help_menu[27]="普通攻击.";
     str_help_menu[28]="7键释放火球拳.";
     str_help_menu[29]="9键释放超重拳.";
     str_help_menu[30]="0键释放火箭炮.";
     str_help_menu[31]="左软键进入子菜单.";
     str_help_menu[32]="右软键查看本关小";
     str_help_menu[33]="地图.";
     str_help_menu[34]="小地图中,红块代";
     str_help_menu[35]="表主角,蓝块代表";
     str_help_menu[36]="敌人和物品.";
     str_help_menu[37]="黄色细条代表钉板.";


     int word_null_H=defaultFont.getHeight();
     int word_X=(WIDTH-defaultFont.stringWidth(str_help_menu[1]))/2;

⌨️ 快捷键说明

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