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

📄 framecanvas.java

📁 J2ME手机游戏的矿架程序
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
     g.setColor(0);
     g.fillRect(0,0,WIDTH,HEIGHT);
     g.setColor(0xffd200);
     for(int i=0;i<7;i++)
     {
       g.drawString(str_help_menu[lp_help_word+i],
                    word_X,
                   (HEIGHT-(word_null_H+4)*7)/2+(word_null_H+4)*i,20);
     }

     _draw_yes_or_no(g,1);
   }
//==============================================================================
   private void _drawTalk(Graphics g)
   {
     final int w=WIDTH;
     final int h=imgTalk[0].getHeight();
     int       x=mapX+0;
     int       y=mapY+HEIGHT-h;

     g.drawImage(imgTalk[0],x,y,20);

     for(byte i=0;i<2;i++)
     {
        //do the exit and change icon
        if(strTalk[lp_whichTalk][lp_strTalk+i]=="exit")
        {
           if(gate==7 && lp_whichTalk==6)
           {
              gate=1;
              game_state=GAME_MAIN_MENU;
           }
           else
           {
              goRun();
           }
           break;
        }
        else if(strTalk[lp_whichTalk][lp_strTalk+i]=="change")
        {
          lp_strTalkIcon=(byte)(lp_strTalk+i+1);
          lp_strTalk=(byte)(lp_strTalkIcon+1);
          continue;
        }
        //draw icon
        if(strTalk[lp_whichTalk][lp_strTalkIcon]=="man")
        {
           g.drawImage(imgTalk[1],x+6,y+6,20);
        }
        else if(strTalk[lp_whichTalk][lp_strTalkIcon]=="boss")
        {
           g.drawImage(imgTalk[2],x+6,y+6,20);
        }
//        else if(strTalk[lp_whichTalk][lp_strTalkIcon]=="hint")
//        {
//           g.setColor(0xff0000);
//           g.drawString("hint",x+6,y+6,20);
//        }
        //draw string
        g.drawString(strTalk[lp_whichTalk][lp_strTalk+i],x+50,
                     y+12+i*(defaultFont.getHeight()+3),20);
     }
   }
//==============================================================================
   private void _draw_GAME_SMALL_MAP(Graphics g)
   {
     final byte w=8;
     final byte h=8;
     //draw back
     g.setColor(0);
     g.fillRect(0,0,WIDTH,HEIGHT);
     //draw mapCell
     for(int i=0;i<map.length;i++)
     {
        for(int j=0;j<map[0].length;j++)
        {
            if(show_map_x+j*w>HEIGHT)
            {
               break;
            }
            if(show_map_x+j*w<-w)
            {
               continue;
            }
            else if(map[i][j]==nail_index[(gate+1)%2])
            {//钉板
               g.setColor(0xff9803);
               g.fillRect(show_map_x+j*w+3  ,show_map_y+i*h  ,w/4,h);
            }
            else if(!isCanGo_mapCell[(gate+1)%2][map[i][j]])
            {//mapCell
               g.setColor(0x052dfa);
               g.fillRect(show_map_x+j*w  ,show_map_y+i*h  ,w,h);
               g.setColor(0x677ffa);
               g.fillRect(show_map_x+j*w+1,show_map_y+i*h+1,w-2,h-2);
            }
        }
     }

     //show man
     g.setColor(0xfd1c05);
     g.fillRect(show_map_x+(man.x)/mapCellW*w,
                show_map_y+((man.y)/mapCellH-1)*h,w,h);
     //draw monster
     for(int a=0;a<monster.length;a++)
     {
        switch(monster[a].who)
        {
           case 99:
                break;
           case 0:
           case 1:
           case 2:
           case 3:
           case 4:
           case 5:
           case 6:
           case 7:
           case 8:
//             if(_hit(mapX,mapY,WIDTH,HEIGHT,//如果monster在屏幕中
//                     monster[a].x-monster[a].w/2,
//                     monster[a].y-monster[a].h,
//                     monster[a].w,monster[a].h))
              {
                g.setColor(0x2ae605);
                g.fillRect(show_map_x+(monster[a].x)/mapCellW*w,
                           show_map_y+((monster[a].y)/mapCellH-1)*h,w,h);
              }
              break;
        }
     }
     _draw_yes_or_no(g,1);
   }
//==============================================================================
   private void _drawMap(Graphics g)
   {
      //move back
//      g.setColor(0x0);
//      g.fillRect(mapX,mapY,WIDTH,HEIGHT);
      //=========================================
      byte lpNowMapX = (byte)(  mapX/mapCellW);
      byte lpNowMapY = (byte)(  mapY/mapCellH);
      byte addW      = (byte)( WIDTH/mapCellW);
      byte addH      = (byte)(HEIGHT/mapCellH);
      if((mapX%mapCellW)!=0)
      {
         addW++;
      }
      if(mapY%mapCellH!=0)
      {
         addH++;
      }
      if(lpNowMapX+addW<map[0].length)
      {
         addW++;
      }
      if(lpNowMapY+addH<map.length)
      {
         addH++;
      }
      //draw mapCell
      for(byte h=0;h<addH;h++)
      {
        for(byte w=0;w<addW;w++)
        {
            g.setClip((w+lpNowMapX)*mapCellW,(h+lpNowMapY)*mapCellH,mapCellW,mapCellH);
            g.drawImage(imgMapCell,
                       (w+lpNowMapX)*mapCellW-(map[h+lpNowMapY][w+lpNowMapX]-1)*mapCellW,
                       (h+lpNowMapY)*mapCellH,20);
        }
      }
      g.setClip(0,0,999999,999999);

      //draw man blood back
      g.drawImage(imgManBlood,mapX+2,mapY+2,20);
      //draw man blood
      g.setColor(0xff0000);
      g.fillRect(mapX+2+3,mapY+2+3,man.blood*64/man.max_blood,4);
      //draw man man.magic
      g.setColor(0x0000ff);
      g.fillRect(mapX+2+3,mapY+2+8,man.magic*64/man.max_magic,4);
      //draw boss blood
      if(gate==7 && monster[2].hurt%2==0)
      {
         //draw boss blood back
         g.drawImage(imgMonster[6][1],mapX+2+98,mapY+2,20);
         //draw man blood
         g.setColor(0xff0000);
         g.fillRect(mapX+2+98+5,mapY+2+8,monster[2].blood*39/80,3);
      }
   }
//==============================================================================
//   private void _drawMap(Graphics g)
//   {
//      //move back
//      //=========================================
//      byte lpNowMapX = (byte)(  mapX/mapCellW);
//      byte lpNowMapY = (byte)(  mapY/mapCellH);
//      byte addW      = (byte)( WIDTH/mapCellW);
//      byte addH      = (byte)(HEIGHT/mapCellH);
//      if((mapX%mapCellW)!=0)
//      {
//         addW++;
//      }
//      if(mapY%mapCellH!=0)
//      {
//         addH++;
//      }
//      if(lpNowMapX+addW<map[0].length)
//      {
//         addW++;
//      }
//      if(lpNowMapY+addH<map.length)
//      {
//         addH++;
//      }
//      //draw mapCell
//      for(byte h=0;h<addH;h++)
//      {
//        for(byte w=0;w<addW;w++)
//        {
//            g.setClip( (w+lpNowMapX)*mapCellW-(map[h+lpNowMapY][w+lpNowMapX]-1)*mapCellW,
//                       (h+lpNowMapY)*mapCellH,mapCellW,mapCellH);
//            g.drawImage(imgMapCell,
//                       (w+lpNowMapX)*mapCellW-(map[h+lpNowMapY][w+lpNowMapX]-1)*mapCellW,
//                       (h+lpNowMapY)*mapCellH,20);
//        }
//      }
//      g.setClip(0,0,999999,999999);
//
//      //draw man blood back
//      g.drawImage(imgManBlood,mapX+2,mapY+2,20);
//      //draw man blood
//      g.setColor(0xff0000);
//      g.fillRect(mapX+2+3,mapY+2+3,man.blood*64/man.max_blood,4);
//      //draw man man.magic
//      g.setColor(0x0000ff);
//      g.fillRect(mapX+2+3,mapY+2+8,man.magic*64/man.max_magic,4);
//      //draw boss blood
//      if(gate==7 && monster[2].hurt%2==0)
//      {
//         //draw boss blood back
//         g.drawImage(imgMonster[6][1],mapX+2+98,mapY+2,20);
//         //draw man blood
//         g.setColor(0xff0000);
//         g.fillRect(mapX+2+98+5,mapY+2+8,monster[2].blood*39/80,3);
//      }
//   }
//==============================================================================
   private void _drawRain(Graphics g)
   {
     int rainX,rainY;
     //draw rain
      for(int b=0;b<10;b++)
      {
          g.setColor(0xffffff);
          rainX=_getRandomNumInTwo(0,WIDTH);
          rainY=_getRandomNumInTwo(0,HEIGHT);
          g.drawLine(mapX+rainX,
                     mapY+rainY,
                     mapX+rainX-2,
                     mapY+rainY+4);

          g.setColor(0xd5d6d7);
          g.drawLine(mapX+rainX-2,
                     mapY+rainY+4,
                     mapX+rainX-4,
                     mapY+rainY+8);
      }
   }
//==============================================================================
   private boolean _hit1(int x1,int y1,int w1,int h1,int x2,int y2,int w2,int h2)
   {
     if(Math.abs(x1-x2)<(w1+w2)/2
         &&
        Math.abs(y1-y2)<(h1+h2)/2)
     {
        return true;
     }
     else
     {
        return false;
     }
   }
//=================================================
    private void _draw_yes_or_no(Graphics g,int how)
    {
      //yes
      if(how==0 || how==2)
      {
         g.setClip(      0,HEIGHT-8,8,8);
         g.drawImage(imgIs,0,HEIGHT-8,20);
      }
      //no
      if(how==1 || how==2)
      {
         g.setClip(WIDTH-8,HEIGHT-8,8,8);
         g.drawImage(imgIs,WIDTH-8-8,HEIGHT-8,20);
      }
      g.setClip(0,0,WIDTH,HEIGHT);
    }
//=================================================
   private void _draw_up_or_down(Graphics g,int how,int x,int y)
   {
     //yes
     if(how==0 || how==2)
     {
        g.setClip(x+(WIDTH-12)/2,
                  y+2+gameTime%2,
                  12,8);
        g.drawImage(imgIs,
                    x+(WIDTH-12)/2,
                    y+2+gameTime%2,
                    20);
     }
     //no
     if(how==1 || how==2)
     {
        g.setClip(x+(WIDTH-12)/2,
                  y+HEIGHT-2-8-gameTime%2,
                  12,8);
        g.drawImage(imgIs,
                    x+(WIDTH-12)/2,
                    y+HEIGHT-2-16-gameTime%2,
                    20);
     }
   }
//==============================================================================
   private void _draw_GAME_LOAD_SOUND(Graphics g)
   {
     String str_load_sound[]=new String[4];
     str_load_sound[0]="正在载入声音";
     str_load_sound[1]="请稍候";

     g.setColor(0xffd200);
     g.drawString(str_load_sound[0],
                 (WIDTH-defaultFont.stringWidth(str_load_sound[0]))/2,40,20);
     g.drawString(str_load_sound[1],
                 (WIDTH-defaultFont.stringWidth(str_load_sound[1]))/2,70,20);
   }
//==============================================================================
   private void _draw_GAME_MAIN_MENU(Graphics g)
   {
     g.drawImage(imgGameLogo,0,0,20);
     _draw_yes_or_no(g,0);
     String str_main_menu[]=new String[6];

     str_main_menu[0]="新的冒险";
     str_main_menu[1]="继续探险";
     str_main_menu[2]="设置声音:";
     str_main_menu[3]="帮助";
     str_main_menu[4]="关于";
     str_main_menu[5]="离开游戏";
     if(PlaySound)
     {
        str_main_menu[2]=str_main_menu[2]+"开";
     }
     else
     {
        str_main_menu[2]=str_main_menu[2]+"关";
     }
     _drawMenu(g,str_main_menu[menu_choose]);
   }
//==============================================================================
   private void _draw_GAME_SUB_MENU(Graphics g)
   {
     int word_null_H=defaultFont.getHeight();

     String str_sub_menu[]=new String[5];
     str_sub_menu[0]="返回游戏";
     str_sub_menu[1]="返回主菜单";
     str_sub_menu[2]="设置声音:";
     str_sub_menu[3]="保存游戏";
     str_sub_menu[4]="离开游戏";

     if(PlaySound)
     {
        str_sub_menu[2]=str_sub_menu[2]+"开";
     }
     else
     {
        str_sub_menu[2]=str_sub_menu[2]+"关";
     }
//     g.setColor(0);
//     g.fillRect(0,0,WIDTH,HEIGHT);
     g.drawImage(imgMenuBack,0,0,20);

     for(int i=0;i<str_sub_menu.length;i++)
     {
       if(menu_choose==i)
       {
          g.setColor(0xffffff);
       }
       else
       {
          g.setColor(0xffd200);
       }
       g.drawString(str_sub_menu[i],
                    (WIDTH-defaultFont.stringWidth(str_sub_menu[i]))/2,
                   (HEIGHT-(word_null_H+8)*str_sub_menu.length)/2+(word_null_H+8)*i,20);
     }

     if(saveWin>0)
     {
        saveWin--;
        g.setColor(0);
        g.fillRect((WIDTH-(WIDTH-48))/2,(HEIGHT-24)/2,WIDTH-48,24);
        g.setColor(0x0000ff);
        g.drawString("第"+gate+"关存档成功",
                    (WIDTH -defaultFont.stringWidth("第"+gate+"关存档成功"))/2,
                    (HEIGHT-defaultFont.getHeight())/2,20);
     }
     _draw_yes_or_no(g,0);
   }
//==============================================================================
   private int  _drawMenu(Graphics g,String str_menu)
   {
     String str=null;
     if(gameTime%4==0)
     {
        str="<<"+str_menu+">>";
     }
     else if(gameTime%4==1 ||gameTime%4==3)
     {
        str="<< "+str_menu+" >>";
     }
     else if(gameTime%4==2)
     {
        str="<<  "+str_menu+"  >>";
     }
     g.setColor(0xffd200);
     g.drawString(str,
                  (WIDTH-defaultFont.stringWidth(str))/2,
                  HEIGHT-defaultFont.getHeight()*2,20);
     return 1;
   }
//==============================================================================
   private void _drawMan(Graphics g)
   {
      //draw man
      if(man.hurt%2==0)
        _drawImg(g,imgMan[man.face-right],
                 man.x,man.y-imgD_XY[man.frame][3],
                 imgD_XY[man.frame][0],imgD_XY[man.frame][1],
                 imgD_XY[man.frame][2],imgD_XY[man.frame][3],
                 imgMan[man.face-right].getWidth(),man.face,man.w);
   }
   //=====================================================
   private void _drawMonster(Graphics g)
   {
     byte    monster_die=0;
     boolean canSee=false;
     //如果此时有敌人
     if(monster!=null)
     for(byte i=0;i<monster.length;i++)
     {
       canSee=_hit(mapX,mapY,WIDTH,HEIGHT,//如果monster在屏幕中

⌨️ 快捷键说明

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