📄 framecanvas.java
字号:
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 + -