仓酷云

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

[学习教程] JAVA网页设计J2ME 2D小游戏进门之旅(三) 把持飞机的...

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

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

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

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

本版积分规则

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

GMT+8, 2024-9-21 01:35

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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