使用NetBeans进行J2ME开发(五):揭开游戏开发的神秘面纱

游戏开发,好大的一个命题哦。无论是游戏的剧情设计,还是游戏的美工制作,那都不是一两下子能够完成的事,而编程,只是其中的一小部分。但是,就算是这一小部分,我也不可能把它掌握得很透彻。这篇随笔,大部分都是些抄书的东西,主要是为了我的博客的完整性而存在,但是我依然会尽力把它写好,要让那些精通Java其它领域但是却没有机会做J2ME开发的高手们看看图片解解馋,让那些想做手机游戏开发的同仁们看看J2ME的Game API究竟为我们提供了哪些支持,让我们知道写游戏需要了解哪些概念。

先来了解一下MIDP 2.0的游戏开发包,不用怕,这组API很简洁,只有区区5个类,它们都位于javax.microedition.lcdui.game包中。它们分别为GameCanvas类、Layer类、LayerManager类、Sprite类和TiledLayer类。下面分别来介绍一下各个类的用途。

1> GameCanvas类

GameCanvas类是Canvas的子类,它代表了游戏的基本界面,简单一点说,就是所有的游戏画面都是在GameCanvas上进行绘制的。那么GameCanvas和Canvas相比,究竟提供了些什么更高级的功能呢?主要有两点:1、实现了双缓冲功能;2、提供了轮询键盘输入事件的方法。

双缓冲大家肯定很熟悉,就是我们绘图的时候先把图象绘制到一个缓冲区中,等图象绘制完成后,再一次性显示到屏幕上,这样,就可以有效消除闪烁和画面撕裂等现象。在GameCanvas中,我们可以通过getGraphics()方法取得缓冲区的Graphics对象实例,可以通过flushGraphics()方法来将缓冲区的内容显示到屏幕上。

轮询键盘输入事件有什么用呢?要回答这个问题,我们首先要了解一些基本的游戏框架,在大部分游戏中,都存在一个主循环,这个主循环决定了我们的游戏以每秒钟多少步的频率运行,而在每一步中,先查询有无键盘输入事件,再运行游戏的逻辑运算,最后更新画面,然后再进入下一步。在Canvas中,键盘的输入事件都是通过回调的方式进行的,也就是说当有按键按下的时候,调用keyPressed()方法,这样的功能肯定不能够满足我们这样的每一步都要查询键盘输入的要求。通过调用getKeyStates()方法即可轮询键盘。

2> Layer类

这是一个抽象类,我们并不直接使用它,而是使用它的两个子类——Sprite类和TiledLayer类

3> Sprite类

Sprite是精灵的意思,这是一个游戏开发的专有名词,在我们游戏中的每一个对象,我们都可以称为一个精灵。Sprite类提供了画面的翻转、旋转及简单的碰撞检测等。要在GameCanvas上绘制一个精灵对象也很简单,只需要调用Sprite的paint方法,该方法需要一个Graphics类型的参数,我们把缓冲区的Graphics对象实例传递给它即可。

4> TiledLayer类

Tile也是一个二维游戏开发的经典词汇,是砖块的意思。这个类有什么用呢?主要是用来构建地图。这个道理一想也很容易明白,我们玩的游戏中,地图往往比屏幕窗口大很多,难道我们需要做这么大的图片吗?当然不是,我们只需要做几个小图片,它这些图片按照一定的顺序平铺,就可以得到一个相当大的地图。TiledLayer类就为我们提供了这样的功能。

5> LayerManager类

这个类主要是用来管理Layer,它可以在画布上分层次的绘制精灵和地图,这样,就可以比较方便的解决谁在前、谁在后、谁遮挡谁等问题。

下面来看实例。刚才已经说过,游戏设计是一个很复杂的过程,没有专业的队伍是很难搞的。当然,我们也不是没有另类的搞法,那就是翻版。想一想我们从小时候到现在玩过哪些经典游戏?俄罗斯方块、超级玛丽、合金弹头、雷电、街霸、拳皇等等,还有前两年非常流行的“是男人系列”,这些游戏各有各的运行平台,后来又大部分移植到PC平台,现在,我们何不试试将它们移植到手机上呢?通过前面的介绍,不难看出,这些经典的2D游戏都可以使用上面的几个类来概括:飞机、子弹、敌人都是Sprite,大海、天空、森林、沙漠都是TileLayer,我们所面临的难题,就是搜集和制作图片素材而已。

这里的实例是“是男人就下一百层”的手机翻版,下载地址:http://www.j2medev.com/Soft/src/game/200610/802.html,作者不详,反正不是我。下面是运行效果图:

时间: 2024-08-31 06:14:53

使用NetBeans进行J2ME开发(五):揭开游戏开发的神秘面纱的相关文章

使用Hyde基于纯文本系统的站点开发工具包揭开内容管理的神秘面纱

Hyde 是一个流行的站点生成器,提供了功能强大的基于 Django 的模板和元数据管理.Hyde 是在 Python 中实现的,但并不要求一定要掌握 Python 知识.在本文中,我们将学习如何使用 Hyde 加快静态站点的开发. 在 Web 开发早期,大多数网页只是某个服务器上文件系统中的一个页面.随着 Web 的日益成熟,借助动态站点.电子商务.大规模发布和 Web 上的应用程序,从使用简单文件转换到使用复杂的 Web 内容管理系统 (CMS) 和发布工具也变得越来越普遍.每天都有数以千计

揭开正则表达式语法的神秘面纱

语法|正则 正则表达式(REs)通常被错误地认为是只有少数人理解的一种神秘语言.在表面上它们确实看起来杂乱无章,如果你不知道它的语法,那么它的代码在你眼里只是一堆文字垃圾而已.实际上,正则表达式是非常简单并且可以被理解.读完这篇文章后,你将会通晓正则表达式的通用语法. 支持多种平台 正则表达式最早是由数学家Stephen Kleene于1956年提出,他是在对自然语言的递增研究成果的基础上提出来的.具有完整语法的正则表达式使用在字符的格式匹配方面上,后来被应用到熔融信息技术领域.自从那时起,正则

不再做“异教徒”——揭开数据库PostgreSQL的神秘面纱

中国云计算产业最具影响力的盛会之一--2016杭州云栖大会(https://yunqi.aliyun.com/)将在云栖小镇召开.连续举办七届的云栖大会一直是业界了解阿里云计算生态发展和应用趋势.体验前沿技术和产品的最佳平台,来自海内外的上万名开发者.创业者聚集于此,分享着他们对云计算的思考与实践经验.7年来,从产品发布到行业解决方案展示,从关注技术到技术与服务并重,从单一的客户到生态全景的展现,大会的核心内容一直在"进化",而2016年杭州云栖大会,则以"飞天・进化&quo

揭开全体数据的神秘面纱(上)--疑读《大数据时代》(三)

在<大数据时代>中,迈尔-舍恩伯格告诉我们大数据时代的第一大特征就是"不是随机样本,而是全体数据".我们在上篇通过分析"北京地区吃过麦当劳的人数"这样一个最简单的信息需求,说明即使在大数据时代,随机样本分析也是必不可少的,因为现实中并不是对每个问题研究都具备一个可用的全体数据. 本文专门谈论所谓全体数据,为大家揭开全体数据的神秘面纱. 何为全体数据? 在<大数据时代>一书中,全体数据是与随机样本相对立的概念.迈尔大叔这样描述道:"首

SEO诊断服务:揭开网站排名的神秘面纱

  对于很多不了解SEO优化及搜索引擎工作原理的人来说,常常会发出:"为什么这个网站可以排在百度或谷歌首页?是怎么做到的?利用了什么SEO原理与技巧呢?"等等这样或那样的疑问.其实这些看似让我们迷惑不解的问题,都可通过SEO诊断优化服务来为你揭开揭开网站排名的神秘面纱.最后,你会发现也不过如此,原来就像1+1=2一样的简单,只是我们把它复杂化了,当别人问我们1+1=?的时候,我们觉得太过于简单了,别人不可能问这样的问题,而不敢说出答案. 当然上面所说的,我们看到别人的网站排名好想知道原

揭开主机营销的神秘面纱

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 现在网络营销盛行,无论是做哪一行的销售,都用到了网络营销,然而主机是不是也一样用到了营销的思想呢?就拿IX主机近期如此火爆来说吧,其实就是用了主机营销的思想,还为此成立了IX中文站现在我们就一起来揭开主机营销的神秘面纱吧. 一.了解站长心中的渴望 如果你不知道站长想要的是什么样的主机,对主机有哪些要求,渴望买到什么样的主机,你是无法完成销售的

腾讯微信——揭开房地产基金的神秘面纱

随着腾讯入股大众点评罿/a>的消息落地,腾讯股价再次创造了历史新高;与此同时,当天微信"我皿a href="http://news.pedaily.cn/industry/银行/" target="_blank">银行卡"中就出现了"今日美食"栏目.该栏目恰恰就是大众点评罿/a>的团购栏目〿a href="http://news.pedaily.cn/industry/互联罿" targe

安卓开发-安卓手机游戏开发用什么游戏引擎

问题描述 安卓手机游戏开发用什么游戏引擎 想学安卓游戏开发,想问问现在安卓开发用什么游戏引擎,大型的预习也是java代码吗??还有网游呢???untiy3d只能是c#吗???cocos2d呢??真心求知道谢谢....没有开发过游戏,请调教 我现在在java web公司上班 没怎么解除新鲜的实物 请大家帮忙 想做一个小型的角色扮演类网游,学习一下.看点什么资料好呢 解决方案 cocos2d是最流行的 解决方案二: 开发Android游戏的引擎有很多,比如 cocos2d.AndEngine.Uni

VMware揭开Workspace ONE的神秘面纱

ZD至顶网服务器频道 02月11日 编译:近日,VMware揭开了盖在最终用户计算业务之上的神秘面纱,几年努力的成果终于呈现在大家面前.Workspace ONE是新产品的名字,这真是一个奇怪的选择,该公司最大的竞争对手Citrix的产品名称是Workspace Suite和Workspace Cloud. 相似之处并没有到此为止.这两家公司现在都提供支持单点登录的各种应用程序发布产品,几乎能够让使用任何设备的用户访问针对他们的需求.角色和权限进行了个性化的应用程序集.两者都有移动设备管理.两者