|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。计划|源代码
游戏计划中的形态转换是一个既长短常主要又非常庞大的部分。我头几天做移植的时分看到一个publicvoidkeyPressed(intkeyCode)两头居然有着近2000千行的代码,如许的话冗杂的代码不但不切合OO的思加倍严峻的是会打搅我们的程序思绪。这两天使用State形式做了一个J2ME游戏中的形态转换因为只是一个实行的例子以是只做了入手下手菜单和匡助的转换,在这个框架下再到场其他的形态实践就是非常的复杂的了。
如今DEMO中只要两个形态,两种形态下keyPressed和paint的功效是分歧的,我们用形态形式来完成各类形态下的keyPressed和paint的功效功效。
起首界说笼统形态State接口,这个接口指定了keyPressed和paint的举动
publicinterfaceState{
publicvoidonKeyPressed(intkeyCode,StateManage_current);
publicvoidpaint(Graphicsg);
}
State接口keyPressed和paint办法,我们完成两个子类HelpMenuState和MainMenuState,分离暗示主菜单形态和HELP菜单的形态,并完成详细的onKeyPressed和paint办法:
publicclassMainMenuStateimplementsState{
/**省略变量的声明和初使化部分*/
publicvoidonKeyPressed(intkeyCode,StateManage_current){
switch(whichMenu){
case0:
mainMenuKeyPressed(keyCode,_current);
break;
case1:
break;
}
}
privatevoidmainMenuKeyPressed(intkeyCode,StateManage_current){
switch(keyCode){
case1://KEY_UP=1;
menuIndex=menuIndex<=0?menuMain.length-1:--menuIndex;
break;
case6://KEY_DOWN=6;
menuIndex=menuIndex>=menuMain.length-1?0:++menuIndex;
break;
case8://KEY_MIDDLE=8;
if(menuIndex==2)
_current.setState(newHelpMenuState());
break;
}
}
publicvoidpaint(Graphicsg){
switch(whichMenu){
case0:
drawMainMenu(g);
break;
}
}
privatevoiddrawMainMenu(Graphicsg){
g.drawImage(imgMenu,0,0,0);
g.setColor(0,0,0);
g.setFont(GameInfo.FONT_LARGE);
for(inti=0;i<menuMain.length;i++)
g.drawString(menuMain[i],120,70+i*20,Graphics.TOP
|Graphics.HCENTER);
g.drawImage(imgIndex,60,65+20*menuIndex,0);//画index图
g.setColor(255,0,0);
g.drawString(menuMain[menuIndex],120,70+20*menuIndex,
Graphics.TOP|Graphics.HCENTER);
}
}
publicclassHelpMenuStateimplementsState{
/**省略变量的声明和初使化部分*/
publicvoidonKeyPressed(intkeyCode,StateManage_current){
switch(whichMenu){
case0:
helpMenuKeyPressed(keyCode,_current);
break;
case1:
break;
}
}
publicvoidhelpMenuKeyPressed(intkeyCode,StateManage_current){
switch(keyCode){
case1://KEY_UP=1;
menuIndex=menuIndex<=0?helpMenuString.length-1
:--menuIndex;
break;
case6://KEY_DOWN=6;
menuIndex=menuIndex>=helpMenuString.length-1?0
:++menuIndex;
break;
case8://KEY_MIDDLE=8;
if(menuIndex==4){
_current.setState(newMainMenuState());
}
break;
}
}
publicvoidpaint(Graphicsg){
drawHelp(g);
}
privatevoiddrawHelp(Graphicsg){
for(inti=0;i<=15;i++){
for(intj=0;j<=10;j++){
g.drawImage(img,0+24*i,0+24*j,0);
}
}
g.setColor(251,220,48);
g.setFont(GameInfo.FONT_LARGE);
g.drawString("<<HELP>>",120,40,Graphics.TOP|Graphics.HCENTER);
for(inti=0;i<helpMenuString.length;i++)
g.drawString(helpMenuString[i],120,80+i*25,Graphics.TOP
|Graphics.HCENTER);
g.setColor(255,0,0);
g.drawString(helpMenuString[menuIndex],120,80+25*menuIndex,
Graphics.TOP|Graphics.HCENTER);
}
}
最初,界说StateManage,StateManage的实例作为形态转换的把持器:
publicclassStateManage{
State_current;
publicStateManage(){
_current=newMainMenuState();//以主菜单入手下手
}
再说第三点:我并没有提到服务器也要整合,然后是IDE,一个好的IDE能够200%提高开发的速度,就说图形方面:你是经过简单托拽和点击就能实现功能好那。 |
|