admin 管理员组文章数量: 887021
2024年1月5日发(作者:二维数组怎么声明)
第11卷第1期 j 商母院母鞭 No 1 ” 2010年1月 Journal ofSb且ng}. Business School Jan.2010 【操作实务】 基于J2M E手机游戏开发的主要技术 以 “贪吃蛇 游戏为例 沈军彩 陶宗杰 (1.上海商学院信息与计算机学院,中国上海200235; 2.丰益(上海)信息技术有限公司,中国上海200127) 摘要:在手机平台上由于受资源的限制,实现性能和效率比高的图像引擎和智能化的NPC等都显得尤为困难。基 于J2ME技术开发的游戏具有开发速度快、移植性强等优势。本文以“贪吃蛇”游戏为基础,介绍基于J2ME手机游戏开 发的关键技术和实现方法。 关键字:手机游戏;J2ME 中圈分类号:TP312 文献标识码:A 文章编号:1637—324X(2010)-01—93—95—03 一、引言 MIDP2.0中等。 随着通信技术的高速发展,移动通信技术规模不断 二、系统分析 扩大并带动了手机性能的不断提高,手机休闲娱乐市场 在“贪吃蛇”游戏中,屏幕上会出现一条不停游动的 的发展趋势已经非常明朗。在品种繁多的手机应用程序 蛇,通过吃豆子长大,并获得分数。蛇必须时时刻刻地游 中,手机游戏所占的份额是最大的,其增长势头远远超 动,玩家用方向键来控制它的移动方向吃到豆子。蛇每次 过其他数据业务,已经成为一个生机勃勃的文化产业。 吃到豆子后,就会变长并获得分数。除了豆子外,游戏中 从技术角度来说,游戏程序不同于普通应用程序,它综 还会出现随机的特殊食物,一般为奖励食物和炸弹。如果 合了图形图像、人工智能、数据存储等多种技术应用, 蛇吃到奖励食物,则获得两倍的分数;如果吃到炸弹,则 对硬件的性能也比普通程序苛刻。在普通PC游戏中,如 减去相应分数。随着玩家分数的不断提高,蛇的速度也会 何实现性能和效率比高的图像引擎,智能化的NPC和平 不断加快。游戏可以无限继续下去,直到蛇撞上边框。游 衡游戏难度尚在不断的研究和探索之中。在手机平台上, 戏结束后,系统将统计玩家的分数,并排出积分榜。 受资源的限制,这些问题更是突出。此外手机的硬件资 “贪吃蛇”游戏的主要用户是玩家。假定一个玩家要 源没有统一的标准,实现一个面向各种不同平台的优秀 玩游戏,必须先进人游戏,然后输入姓名。游戏结束后 游戏更是一种挑战。 根据分数显示积分榜,最后退出游戏。因此,将问题分 随着手机游戏开发中关键技术的使用,实现了手机 为五个基本用例:进入游戏、输入姓名、玩游戏、显示积 游戏的若干重要功能,丰富了手机游戏的内容。主要技 分榜、退出游戏。下面是游戏的用例图(见图1)。 术包括用于移动电话、双通道BP机和其他无线电设备提 供了计时器、用户界面、持久存储器、网络等应用程序 控件MIDP(Mobile Information Device Profile);J2ME (Java 2MicroEdion)中的低级API(Applicaiton m ng Interface),对屏幕精确控制或者接收低级事件的应用程 序——DisDlayable的直接子类Canvas和用于处理声音 收稿日期:2009—12—14 作者简介:I.沈军彩,女,浙江诸暨人,硕士,上海商学院信息与 计算机学院讲师,研究方向:程序设计。电子信箱:she ̄cSO@ hotmail corn.2陶宗杰,男,上海人,丰益f上海)信息技术有限 公司高级程序员,研究方向:程序设计。 图1用例图 http://www.Sbs.edu.Crl ・93・
第11卷第1期 2010年1月 基于J2ME手机游戏开发的主要技术——一以“贪吃蛇”游戏为例 Key Technologies IMsed on J2ME Mobile Games No 1 VoI.11 dan 2010 基于用例分析,得出本游戏的基本功能模块。 游戏界面:负责游戏登录界面的显示和游戏画面的 显示。 游戏流程处理:负责贪吃蛇和食物的生成以及对用户 操作的响应。 游戏积分存储:对用户的积分管理。 三、系统实现 3.1 系统概要实现 本程序的主程序是WormDemo.java,它是MIDlet 类,MI【)let是这个MIDlet套件的程序入口,也是必须 的。MⅡ)1et载入后调用WormMenu类,WormMenu负责 显示欢迎界面。确定后,M/Diet绘制姓名输入框,完成后 调用Wo ̄vas类。WormCanvas负责显示“贪吃蛇”游 戏画面,包括Worm等多个对象将在Wom ̄anvas上绘制。 按类的重要性划分,共有三个重要层次: (1)WormDemo是J2ME中最重要的MIDlet类,是 程序的根基。游戏的Canvas类调用由MID1et类来控制。 这个类封装了MIDP 2.0的方法。 (2)WormMenu和WormCanvas这两个是J2ME的 Canvas类,负责绘制画面。Canvas类可以重载paint (Graphics g)方法。Graphics参数实例化了一个Graphics 对象,此对象绘制具体图像。Canvas类继承了Runnable 接口,必须重载run()方法。通过线程就可以实现蛇和 食物的移动。 (3)六个自定义类负责了程序的业务。其中Worm类 必须依靠WormLink类执行业务。 按MVC架构来分。 本程序符合简化的M-V(V包含C)架构。六个自 定义类为Model模型,负责程序的业务。WormCanvas类 既负责Control模型也负责View模型。这个类中包含了多 个方法调用其他类,封装了流程。同时paint(Graphics g) 等方法又将画面显示给玩家。在J2ME程序中,这种做 法是很普遍的,完全按照设计模式编写程序会造成执行 效率低下。 3.2移动效果的实现 “贪吃蛇”的身体绘制方法可以分为两种:(1)计算 每个点的坐标,并绘制出来。每次移动所有点都重绘。 (2)将蛇分段绘制,每次移动头段增加一个与移动方向对 应的点,尾端减少一个点,中端不变。本程序采用第二 种方法,当蛇的长度变长时效率损失较第一种方法小。 J2ME的坐标系统以左上角为原点,向右x值增大, 向下Y值增大。所有基本图形的绘制都是从左往右画。 贪吃蛇的图形是由线段构成,所以绘制也是从左向右画。 1.Worm类包含—个容器,用来引用WormLink类。容 器默认长度为5,每次增量为2。默认存放5端WormLink, 每增加1次容量,多2段空间。 private Vector worm new Vector(5,2); //Vector容器类 ・94・ 2.Vector类提供了addElement()方法,参数为自 定义类型对象,无须再编写插入算法。 worm.addElement(new WormLink(INITX,INIT— Y,INIT—LEN,INITDIR)); }j撬 WormLink对象 3.蛇移动的算法,需要更新Worm类信息。以下为 更新算法的伪码。 head一(WormLink)worrf1.1astElement() //获得Vector容器中的最后对象作为头端 head.increaseLength() //增加头端的长度 tailX—tail.getX() //获得尾端开始的X值 tai1Y—tail.getY() //获得尾端开始的Y值 drawLink(tailX,tailY,tailX,tailY,1) //擦除1格 3.3用户界面实现 游戏的图形界面很重要,华丽的图像和界面虽然不 能决定一款游戏是否经典,但它是不可或缺的一部分。 “贪吃蛇”的游戏界面分为上、下两部分,上部分显示游 戏画面,下部分显示等级和分数。 受到本身技术和资源的限制,我们目前无法为“贪 吃蛇”开发出华丽的游戏界面。Canvas类是实现低级用 户界面的画布,所有的图形图像绘制和用户交互(包括 按键、指针和Command)都由这个类来负责。Canvas类 是实现低级API的Displayable类的子类。它提供了绘制 方法以及应用程序所忽略的一些低级事件处理方法。 图2基于Nokia手机¥60系统模拟机的程序运行效果图 蛇的绘制主要靠拼接线段而成,每次移动时,蛇的 头部增加一点,尾部擦除一点,形成移动的画面。在蛇 拐弯的时候,头部增加一段,而尾部继续减少。因此蛇 的线段数每时每刻是不同的,而且长度也不同,要使用 预先设置的图片比较困难。 等级和分数的字绘制主要使用了J2ME的特殊字体, 并要设置好位置,并预留空间方便以后更改。分数改变 时,每次先擦除原来的分数,然后重新绘制新分数。 http://ww ̄.sbs.edu.crl
No 1 Vo1.11 201第11卷第1期 0年1月 沈军彩陶宗杰 SHEN Junem&TAO Zhongj Jan 2010 食物分味两种,普通的食物吃掉后再自动生成,特 支持MIDP标准,但它们的支持程度不一样,原因就是 殊的食物则会每隔一段时间变换位置和种类。 各种手机的性能存在本质的差距。 3.5游戏积分的存储 脚中的存储系统称为“记录管理系统”(Record Management Systme,RMS),它类似于数据库系统,是一个 简单的面向记录的数据库模型,而不是简单的文件系统。 通常每个数据一条记录的存取方式既占用空间,又 占时间。我们的方案是不使用记录存储系统的其他功能, 只使用记录系统的第一条记录,无论修改或者删除数据 都在这一条记录中进行,这样就解决了存储空间和存取 时间的问题。 四、结束语 本文通过“贪吃蛇”游戏对基于J2ME的游戏实现 中的关键技术,如声音处理、图形绘制、动画的实现等 图3蛇体绘制效果图 进行了介绍 由于手机的硬件资源没有统一的标准,实 3.4声音处理 现一个面向各种不同平台的优秀游戏是一个挑战,因此 除了J2ME本身能够实现的图形及界面外,游戏还需 手机游戏的移植问题一直是开发的难点。而基于J2ME 要一些语言无法实现的资源,比如声音。M 2.0所支 技术开发的游戏具有移植性强、开发速度快等优势。 持的声音格式一般有两种:MⅡ)I格式和WAV格式。MIDI 的优点是体积小,占用硬件资源少;缺点是效果普通。 参考文献: 在J2ME中,处理MIDI文件可以用特定的API来执 [1]Java2 Platform API Standard Edition 1.42规范. 行。通过导入包(javax.microedition.media. ),J2ME [23 Java2 Platform API Standard Edition 5.0规范. 就可获得此API。MIDI文件加载入内存之后生成对象。 E33王森.Java手机程序设计入门与应用[J3.北京:中国铁道出 J2ME有两种方式播放音乐文件,分别对应jar中的音乐 版社. 文件和网络上的音乐文件。在本游戏中,使用了前者。 [4]邵明武.J2ME平台手机游戏的设计与实现[D3.西南交通大 学硕士学位论文. InputStrean is getClass().getResourceAsStream Es]冯迪.基于J2.ME平台的手机游戏设计与实现[M].电子科技 (“/”+Testsound.mid”); 大学出版社. 从资源中获取声音 [63 Bruce Ecke1.Thinking in Java 3 [M3.北京:机械工业出 Player player=Manager.create_Player(is,’’audio/midi”; 版社. 创建播放midi声音的播放器 [73李振鹏,龚剑.J2ME手机游戏开发技术详解[M].北京:清华 player.relaize(); 大学出版社. player.prefetch(); [83<http://www.javav ̄rl&∞ntw/mnlfuenee/Fages/viewp ̄action? player.start(); pageId=3552>. 播放器初始化完成,开始播放音乐。 [9](http://ww ̄daxia.com/list一1702 Shtm1) 通过简单调用API就完成了音乐播放,但可能带来 [1o3覃宇基于J2ME平台的手机游戏开发中若干问题的研究 缺陷:手机加载的时候可能出现白屏。虽然所有的手机都 rJ].电子科技大学学报. Key Technologies Based on J2ME Mobile Games SHEN Juncai &TAO Zhongji。 (1.Faculty of Computing and Information,Shanghai Business School,Shanghai 200235,China; 2.Fengyi Shanghai Information Technology Co.Ltd.Shanghai 200127,China) Abstract:As a result of limited resources,it is difficult to achieve high-efficiency engine images and intellectualized NPC in the handset platforrrL Based on the game“the gluttonous snake”.this paper introduces the key technologies(such as graph images,artificial intelligence,1oading resources and data storage)for the development of mobile games. Key Words:mobile games,J2ME (责任编辑/于清一) http.-//www.sbs.edu.cn ・95・
版权声明:本文标题:基于J2ME手机游戏开发的主要技术——以“贪吃蛇”游戏为例 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1704434200h459704.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论