仓酷云

标题: JAVA网页设计J2ME 2D小游戏进门之旅(三) 把持飞机的... [打印本页]

作者: 若相依    时间: 2015-1-18 11:36
标题: JAVA网页设计J2ME 2D小游戏进门之旅(三) 把持飞机的...
一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。把持其实是等不及了吧?加把劲,让我们到场游戏的配角飞机吧。
你能够将这个游戏定位在举措游戏,一个举措游戏必要不休的从用户端取得输出,基础上不中断,以是plane必要不休的改动地位。那末这个基于桢的游戏应当定在几桢符合呢?这必要在手机中测试,在摹拟器上,假如定在15-18桢摆布,是对照符合的。听csdn的几位xd说有的游戏仅仅定在12桢,以是分歧的游戏是纷歧定的。基础上举措游戏对机子的请求是要高一点。我们的游戏框架是线性的,即输入显现和承受输出是在统一个线程中,15桢以下的游戏处置输出会显得对照苯,高于20桢假如处置器速率较慢,很简单呈现输出卡在缓冲区,处置不外来的情形。现阶段只管让桢数降上去吧,你不克不及和pc上用dx编程时,一致30fps的情形等量齐观。

在这个以把持精灵挪动为次要内容的游戏中,我们不封装任何的游戏事务,我们的程序大概有些稚嫩,不妨,一步一步来吧。



1.飞机

plane是一个尺度的plane。由三桢画面构成,:



在机关函数中,我们到场对飞机的初始化对象语句:

Imageimg=ImageTools.getImage("/pic/MyPlaneFrames.png");

plane=newGameObject(img,24,24);



在gameInit()中初始化形态,地位居中:

plane.reset();

plane.moveto((screenwidth-plane.sprite.getWidth())/2,(screenheight-plane.sprite.getHeight())/2);



在gameMain中到场:

plane.paint(g);



接上去,让飞机在把持下挪动,次要是在gameMain中到场输出处置,假如飞机左移就更新画面到飞机左倾的画面,假如飞机右倾反之,没有输出的时分让飞机处于一般。

if(gameover){

}else{

if(keyevent){

if(key_up){

plane.move(0,-3);

plane.sprite.setFrame(0);

}

if(key_down){

plane.move(0,3);

plane.sprite.setFrame(0);

}

if(key_left){

plane.move(-3,0);

plane.sprite.setFrame(1);

}

if(key_right){

plane.move(3,0);

plane.sprite.setFrame(2);

}

if(key_fire){

}

}

}

else{

plane.sprite.setFrame(0);

}

}

只管很复杂,但这是把持精灵挪动的次要体例。能够设想一下,假如往左飞不是复杂的一桢画面而是播放动画,该怎样完成呢?我们的GameObject功效无限,没有对spriite的动画序列举行加强,从此我们能够加强GameObject,使其撑持多个动画序列,填补spriite的不敷。如今渐渐体味到一个好的游戏引擎是何等主要了吧…



2.背景

让飞机在海面航行吧,我们用一个蓝色的背景图片代表海面,我们必要他展满全部背景。我们利用TiledLayer来绘画背景。




初始化:

img=ImageTools.getImage("/pic/back_water.png");

intbackcolumns=screenwidth/img.getWidth()+1;//盘算横向

intbackrows=screenheight/img.getHeight()+1;

background=newTiledLayer(backcolumns,backrows,img,img.getWidth(),img.getHeight());

intx,y;

for(inti=0;i<backcolumns*backrows;i++){

x=i%backcolumns;

y=i/backcolumns;

System.out.println("x="+x+"y="+y);

background.setCell(x,y,1);

}



接上去在gameMain中到场绘制语句。

background.paint(g);//drawbackground

注重,要包管背景的绘制在飞机的绘画之前。假如利用Layermanager能够很便利的的把持绘制层,可是我们的接上去的枪弹请求多个枪弹对象共用一个sprite的图象,可是Layermanager绘画的时分以Layer为单元,由Layermanager匡助我们挪用各个layer的paint,so一次只撑持将一个sprite画在一个中央,以是我以为Layermanager有些鸡肋。一样平常时分我们仍是本人paint吧。固然,层是一个很主要的观点,使用层,屏幕校准将十分便利,震惊全部屏幕等殊效将很完成。大概你有个好法,可让我不在Layermanager层与sprite形态对象组之间冲突…



可喜可贺呀,我们的飞灵活起来了,哈哈,让我们等候到场枪弹吧,那是本游戏的“精髓”。



但是一些大型开发或者是保密型比较高的项目都会用java,原因有2点,一:java是开源的,不怕别人留后门,偷我工具,.net就不一样了,保持微软的一向风格,源代码不公开
作者: 乐观    时间: 2015-1-21 10:44
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
作者: 蒙在股里    时间: 2015-1-30 15:52
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
作者: 老尸    时间: 2015-1-30 21:58
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
作者: 谁可相欹    时间: 2015-2-6 16:12
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
作者: 再现理想    时间: 2015-2-15 00:20
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
作者: 只想知道    时间: 2015-2-20 04:49
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
作者: 飘灵儿    时间: 2015-2-23 02:32
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
作者: 山那边是海    时间: 2015-2-24 14:54
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
作者: 因胸联盟    时间: 2015-2-25 17:26
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
作者: 若天明    时间: 2015-3-6 01:34
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
作者: 第二个灵魂    时间: 2015-3-12 18:23
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
作者: 不帅    时间: 2015-3-18 10:33
Java 编程语言的风格十分接近C、C++语言。
作者: admin    时间: 2015-4-5 01:57
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
作者: 精灵巫婆    时间: 2015-4-10 14:59
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
作者: 小女巫    时间: 2015-4-13 21:31
是一种使网页(Web Page)产生生动活泼画面的语言
作者: 兰色精灵    时间: 2015-5-10 20:41
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
作者: 飘飘悠悠    时间: 2015-5-12 05:09
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
作者: 小妖女    时间: 2015-6-3 21:28
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2