📄 framecanvas.java
字号:
//来电处理
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 + -