JAVA网页编程之j2me游戏引擎程序布局
Java的桌面程序开发在java程序员里通常叫swing开发,主要用的swing包里的类开发的,也就是通常说的c/s架构开发程序游戏引擎的布局良多,不外基础上都是在一个游戏主轮回内完成。程序内里的主轮回包括了程序框架的最次要的布局体。J2me的程序一样平常都包括两个class文件,一个是MIDlet,一个是Displayable。一样平常我都是把游戏的次要代码放在Displayable这个类内里。这个类是基于事务驱动的程序,有三个次要响应函数voidpaint(Graphicsg),voidkeyPressed(intkeyCode),voidkeyReleased(intkeyCode)。1.利用Runnable和创立线程的主轮回
一样平常主体的做法就是让Displayable这个类完成Runnable这个接口,然后在其机关函数中创立一个线程,启动其run()函数,而run函数内里就包括了游戏的主轮回。上面是我在仙剑内里的片段代码。
publicclassGameMIDletextendsMIDlet{
staticGameMIDletinstance;
Displaydisplay;
GameDisplayabledisplayable=null;
publicGameMIDlet(){
instance=this;
display=Display.getDisplay(this);
displayable=newGameDisplayable();
}
publicvoidstartApp(){
display.setCurrent(displayable);
}
publicvoidpauseApp(){
}
publicvoiddestroyApp(booleanunconditional){
displayable.running=false;
}
publicstaticvoidquitApp(){
instance.destroyApp(true);
instance.notifyDestroyed();
instance=null;
}
}
publicclassGameDisplayableextendsFullCanvasimplementsRunnable{
/**主把持线程*/
ThreadMainThread=null;
/**游戏时钟距离毫秒为单元*/
publicstaticlongtimeinterval=20;
publicstaticbooleanIsstable=true;
/*用于游戏时钟的变量*/
publicstaticlongtimeold=0;
publicstaticlongtimenow=0;
publiclonginterval=0;
publicstaticlongframes_per_second=0;
intcount=0;
longsecond=0;
publicstaticbooleanrunning=true;
publicGameDisplayable(){
//入手下手主线程
ThreadMainThread=newThread(this);
MainThread.start();
}
publicvoidrun(){
while(running){
timenow=System.currentTimeMillis();
interval=timenow-timeold;
if(interval>=timeinterval){
timeold=timenow;
Game_Process();
if(second!=(System.currentTimeMillis()/1000)){
second=System.currentTimeMillis()/1000;
frames_per_second=count;
count=1;
}
else
count++;
}
lib.sleep(30);
}
}
个中关于把持主轮回速率的代码能够不要,可是lib.sleep(30)必需保存,由于在Nokia60的手机上,假如往除sleep(30),那末游戏将没法切换返来。同时,在游戏中任何一个外部轮回中,也必需到场sleep(30)这个守候,才干让游戏能够切换返来,至于为何如许做,我临时还不分明。30ms是我测试过没有成绩的数值,大概比30ms还小的值也是没有成绩的。
同时,在MOTO的手机上,必需将游戏的主轮回放在一个线程中,游戏才干切换返来,不外能够不加下面说的sleep(30)延时。
2.不利用线程的主轮回举措
这个举措只能在Nokia的平台上完成,而我只倡议在Nokia40的平台上做,如许不必要线程,事理下去说勤俭了一些内存,假如不是内存很严重的机型,那末最好仍是利用上一种举措。
游戏的主轮回放在MIDlet的class内里,详细做法以下:
publicclassGameMIDletextendsMIDlet{
GameDisplayabledisplayable=null;
/**游戏时钟距离毫秒为单元*/
publicstaticlongtimeinterval=0;
//用于游戏时钟的变量
publicstaticlongtimeold=0;
publicstaticlongtimenow=0;
publiclonginterval=0;
publicstaticlongframes_per_second=0;
intcount=0;
longsecond=0;
publicstaticbooleanrunning=false;
staticbooleanexitApp=false;
publicGameMIDlet(){
displayable=newGameDisplayable();
running=true;
}
publicvoidstartApp(){
running=true;
Display.getDisplay(this).setCurrent(displayable);
while(running){
timenow=System.currentTimeMillis();
interval=timenow-timeold;
if(interval>=timeinterval){
timeold=timenow;
displayable.Game_Process();
if(second!=(System.currentTimeMillis()/1000)){
second=System.currentTimeMillis()/1000;
frames_per_second=count;
count=1;
}else
count++;
}
}
if(exitApp){
destroyApp(true);
notifyDestroyed();
}
}
publicvoidpauseApp(){
running=false;
}
publicvoiddestroyApp(booleanunconditional){
running=false;
}
publicstaticvoidquitApp(){
running=false;
exitApp=true;
}
}
JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由升阳(SunMicrosystems)公司的詹姆斯·高斯林(JamesGosling)等人于1990年代初开发。 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 Java 编程语言的风格十分接近C、C++语言。 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 是一种使用者不需花费很多时间学习的语言 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 是一种语言,用以产生「小应用程序(Applet(s)) Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 Java是一种计算机编程语言,拥有跨平台、面向对java 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
页:
[1]