仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1143|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA编程:State形式在J2ME游戏计划中的使用(必要...

[复制链接]
莫相离 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:35:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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%提高开发的速度,就说图形方面:你是经过简单托拽和点击就能实现功能好那。
金色的骷髅 该用户已被删除
沙发
发表于 2015-1-21 10:38:50 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
透明 该用户已被删除
板凳
发表于 2015-1-24 16:26:54 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
海妖 该用户已被删除
地板
发表于 2015-1-27 21:33:47 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
若天明 该用户已被删除
5#
发表于 2015-1-29 22:42:56 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
变相怪杰 该用户已被删除
6#
发表于 2015-2-3 12:06:43 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
老尸 该用户已被删除
7#
发表于 2015-2-8 20:52:34 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
活着的死人 该用户已被删除
8#
发表于 2015-2-9 01:20:31 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
深爱那片海 该用户已被删除
9#
发表于 2015-2-26 16:51:12 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
第二个灵魂 该用户已被删除
10#
发表于 2015-2-26 23:39:33 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
爱飞 该用户已被删除
11#
发表于 2015-3-8 18:28:49 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
蒙在股里 该用户已被删除
12#
发表于 2015-3-16 10:06:14 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
冷月葬花魂 该用户已被删除
13#
发表于 2015-3-22 22:10:27 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
谁可相欹 该用户已被删除
14#
发表于 2015-3-28 00:58:45 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
愤怒的大鸟 该用户已被删除
15#
发表于 2015-4-1 15:33:51 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
简单生活 该用户已被删除
16#
发表于 2015-4-4 14:03:42 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
飘灵儿 该用户已被删除
17#
发表于 2015-4-5 01:08:00 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
因胸联盟 该用户已被删除
18#
发表于 2015-4-7 20:31:16 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
分手快乐 该用户已被删除
19#
发表于 2015-4-13 02:51:45 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
再现理想 该用户已被删除
20#
发表于 2015-4-29 17:30:57 | 只看该作者
是一种使用者不需花费很多时间学习的语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 18:02

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表