软件工程课程设计作业- 基于J2ME的手机游戏开发.doc_第1页
软件工程课程设计作业- 基于J2ME的手机游戏开发.doc_第2页
软件工程课程设计作业- 基于J2ME的手机游戏开发.doc_第3页
软件工程课程设计作业- 基于J2ME的手机游戏开发.doc_第4页
软件工程课程设计作业- 基于J2ME的手机游戏开发.doc_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

教学单位 学生学号 XXX大学(学院)课 程 设 计 (论文)题 目: 年 级: 学 号: 姓 名: 专 业: 指导教师: 2011 年 6 月 19 日1窗体顶端基于J2ME的手机游戏开发摘要随着移动电话的普及率越来越高,手机已经成为人们生活中的必需品。同时,随着科技的发展,移动电话的功能也越来越强,手机娱乐已经成为一项充满发展前景和商机的产业。虽然目前手机的处理能力与个人计算机的标准处理能力相比很有限,但是足够运行一个相对小型的游戏,甚至是3D游戏。本文先从Java手机游戏的背景出发,介绍了Java手机游戏的发展现状,然后从整体上介绍本3D游戏开发的模型、结构分析和具体功能实现,游戏的接口和运作方式。通过对手机游戏开发,MIDP 2.0,以及JSR-184(J2ME 3D技术)的研究,采用立即模式,运用深度优先遍历算法来随机生成游戏地图,并尽力模拟手机游戏的普遍性形式,实现一个操作简单,并有一定可玩性的完整3D手机迷宫游戏。关键词:J2ME;MIDP 2.0;M3G(Mobile 3D Graphics-JSR184);立即模式(immediate mode);深度优先遍历。AbstractWith mobile phone penetration rate increasing, mobile phones have become a necessity in peoples lives. At the same time, with the development of technology, the functions of mobile phones more and more strong, mobile entertainment has become a full development prospects and business opportunities in the industry. Although at present the handling capacity of mobile phones and personal computer processing power than the standard is very limited, but enough of a relatively small operation of the game, or even 3D game.This article start with the background of Java mobile phone games based on the Java development of mobile phone games, and then a whole game on the 3D model of development, structural analysis and specific functions to achieve, the games interface and mode of operation. Through the development of mobile games, MIDP 2.0, and JSR-184 (J2ME 3D technology) research, using the depth-first traversal algorithms to generate random map games, and to try to simulate the universal form of mobile games, to realize a simple operation, and funny 3D maze game on mobile phone.KEY WORDS:J2ME; MIDP 2.0; M3G(Mobile 3D Graphics-JSR184); Immediate mode; The depth-first traversal algorithms目录第一章 前言11.1引言11.2手机游戏现状11.3手机游戏应具有的特征31.4论文内容及安排4第二章 开发环境及相关技术62.1开发环境62.1.1关于Eclipse及Eclipseme62.1.2关于Wireless Tool Kit92.2 MIDP 2.0简介92.3 J2ME概述112.4 J2ME 3D技术简介132.4.1M3G(JSR-184)142.4.2开发模式16第三章 设计作品思想、结构相关 183.1 3D游戏开发概述183.2游戏的策划193.3游戏的准备工作203.4游戏线程213.5游戏的流程223.6深度优先算法生成迷宫233.6.1深度优先遍历的基本方法 243.6.2深度优先算法的基本思想 27第四章 3D迷宫游戏的实现 294.1主类Maze3DMIDlet类294.2 平面Plane类的实现304.2.1定义顶点 324.2.2指定三角带状的顶点索引 324.2.3设置纹理坐标 324.3 迷宫地图Maze类的实现344.4 菜单栏表MenuList类的实现 394.5 设备属性Graphics3DProperties类的实现 414.6 错误处理ErrorScreen类的实现424.7 游戏画布MazeCanvas类的实现 434.7.1变量和构造函数 434.7.2创建开始标志 454.7.3创建结束标志 464.7.4创建迷宫的墙壁 474.7.5半透明的墙壁 494.7.6创建地板 504.7.7游戏视角的切换 514.7.8游戏线程 534.7.9 绘制3D场景 554.7.10 绘制2D图像 56总结58参考文献59附录60第一章 前言1.1 引言最早的手机游戏出现于1997年,经过十年的发展,随着手机终端和移动通信网路的不断进步,手机游戏也正在经历由简单到复杂的进化过程。从全球来看,手机娱乐服务被公认为是带动移动数据业务快速发展的重要力量。作为手机娱乐服务的重要内容之一,近年来,伴随着移动网络和移动终端性能的不断提高与完善,手机游戏业务呈现快速增长的势头,成为一座名副其实的“金矿”。现在,手机用户不断增加,手机的手机越来越复杂,而手机的各种服务业越来越多样化。J2ME 3D技术将是未来手机游戏的发展新方向,目前很多手机厂商(Nokia,Sony Ericsson等等)和手机游戏提供商(Gameloft,EA等)都十分关注。虽然这一领域的技术尚未成熟,但可以预计的是,在未来几年里,该技术必定发展迅猛,成为手机游戏产业的又一热点。1.2 手机游戏现状国内手机游戏市场在过去的几年里呈现快速发展的趋势。2004年增长率接近 100%,2005年也有50%以上的增长。2006年9月,中国移动“百宝箱”游戏业务240家SP更多内容:关联规则挖掘过程、分类及其相关算法及其在现代金融业务中的应用/ctu_85/archive/2008/09/16/2937486.aspx俄罗斯方块VC+的设计与实现/ctu_85/archive/2008/06/14/2545911.aspxC+Primer 第四版 部分习题解答/ctu_85/archive/2007/07/04/1677834.aspx软件课程设计-C语言设计火车票订票系统之源代码(模拟数据库功能)(需求分析+可行性分析)/ctu_85/archive/2007/09/20/1793381.aspx论金融电子化系统建设及其方法/ctu_85/archive/2007/11/30/1909276.aspx经典算法设计方法大杂烩/ctu_85/archive/2008/05/11/2432736.aspxQos and Routing in mobile Ad hoc network (MANETs)/ctu_85/archive/2008/04/01/2242780.aspx编译原理实现词法分析和语法分析/ctu_85/archive/2007/12/13/1932554.aspxlinux核心dos_ddos攻击防御算法分析/ctu_85/archive/2008/01/03/2023205.aspxUnix文件系统模拟实验报告+源代码+代码注释与分析/ctu_85/archive/2008/02/29/2135420.aspx麻省理工算法导论翻译/ctu_85/archive/2007/06/08/1643179.aspx浙江大学ACM试题解答(四月)/ctu_85/archive/2007/04/24/1576831.aspx浙江大学ACM试题解答(三月)/ctu_85/archive/2007/03/20/1535556.aspx华容道游戏与算法/ctu_85/archive/2007/05/15/1610722.aspx中国象棋对战程序C语言源代码/ctu_85/archive/2007/05/04/1596351.aspx三维建筑物图像的二维建模/ctu_85/archive/2006/12/20/1451106.aspx分段线性骨架/ctu_85/archive/2006/06/15/799847.aspx基于图论的图像分割技术/ctu_85/archive/2006/06/15/799857.aspxLinux文件系统/ctu_85/archive/2006/06/12/791644.aspx分层模型/ctu_85/archive/2006/06/07/777997.aspx汉语编程企业管理应用软件可行性研究报告/ctu_85/archive/2007/01/22/1490139.aspx汉语编程企业管理应用软件需求说明书/ctu_85/archive/2007/01/22/1490136.aspx计算机专业操作系统课程设计报告/ctu_85/archive/2007/01/22/1490130.aspx软件可行性报告/ctu_85/archive/2006/06/06/775894.aspx软件需求分析报告/ctu_85/archive/2006/06/06/775892.aspx两种计算Ack(m,n)的非递归算法/ctu_85/archive/2006/11/29/1419396.aspx浙江大学计算机复试解答1/ctu_85/archive/2006/10/15/1334936.aspx浙江大学计算机复试解答2/ctu_85/archive/2006/10/16/1336101.aspx浙江大学计算机复试解答3/ctu_85/archive/2006/11/02/1363159.aspx 创造的接近3000万元的手机游戏收入中,收入前 20名SP的手机游戏合计收入就接近2000万元,占总收入比例的70%。这意味着占SP总数十二分之一的SP掌握了手机游戏市场约七成的财富。中国手机游戏行业在发展的同时,一些问题也日益显露出来。特别是人才缺乏,手机终端版本不同,网络服务较差,下载费用较贵,盗版现象时有发生,缺少良好的运营模式,收费过高等因素严重等制约了行业的进一步发展和质量的提高。因此,中国手机游戏企业必须抓住新的发展形势,建立良好的产业环境、规范产业定位,建立法律法规制度,建立相应的收费体系和管道,重视品牌和用户的培养,充分调动社会资源,拓展手机游戏获取管道,只有这样才能在新形势下立于不败之地。目前,移动电话是最多人拥有的可以搭载Java的终端设备,用户人数越多,也就意味着人们使用手机应用软件的机会越大。这对一个手机应用软件开发者来说,是个很大的商机。手机游戏的盈利主要是由于它们的涉及面很广。手机已经与现代生活方式紧紧地结合在一起。他们是最普遍携带的个人用品中仅次于钥匙和钱包的东西。传统的台式机游戏大部分玩家是青少年,而手机游戏则每个人都可以访问的到随时,随地。所以在很多国家和地区已经发展出了很多相当成熟的手机上的单机和网络游戏。1.3 手机游戏应具有的特征一个手机游戏应该具有以下特征:易于学习: 既然手机游戏面向的是普通消费者而不是计算机专家,那么他们不可能深入的学习游戏技巧。消费者不会花几个小时去研究一个几元的手动操作的游戏。保持游戏的简单是最基本的要求。可中断性: 多任务处理是手机生活方式的基本特征。手机用户常常在任务(如等一个电子邮件或者等车)之间有一小段时间。而游戏、日历管理、通讯和工作数据访问使用的是同一个设备。所以一个好的手机游戏应该提供短时间的娱乐功能,并且允许用户在游戏和工作模式之间顺利切换。基于订阅:手机游戏的盈利成功取决于他们巨大的使用量。一开始开发和设计每个游戏都是昂贵的。如果一个手机游戏开发者要赢利的话,重要的是:同一个游戏引擎,多个标题,基本的故事情节类似。基于订阅的游戏是不断产生收入的最好方法。 丰富的社会交互: 不管一个游戏设计得多好,只要玩家找到了它的根本模式或者玩完了所有的游戏路径很快就会厌烦这个游戏。对于一个基于订阅的游戏,重要的是与别的玩家合作以增强所玩游戏的智力和随机性。在今天纷繁复杂的多玩家游戏中具有丰富社会交互的游戏证明是成功的。1.4 论文内容及安排本文的主要内容是使用J2ME语言,采用Eclipse作为开发平台,WTK作为开发工具,实现各子系统,保证系统的正常运行。友好的接口设计、提示信息的显示、有一定的机器智慧和可玩性、游戏过程的正常运行、游戏的正常退出等主要功能。本文共分为四章,具体安排如下:第一章:主要介绍了当前手机应用软件产业的现状,简要阐述了手机游戏的特征,以及本设计所用J2ME语言的概况。第二章:简要介绍了本设计所用开发环境Eclipse的情况,主要阐述J2ME 3D技术和开发模式。第三章:阐述了3D游戏开发的概念以及本游戏的策划准备工作,并讲述了本设计所用的算法以及游戏流程设计。第四章:详细介绍了本设计各个类(Maze3DMIDlet;Plane;Maze;MazeCanvas;MenuList;Graphics3DProperties;ErrorScreen)的作用和运作方式。第二章 开发环境及相关技术2.1 开发环境操作系统:Microsoft Windows XP SP2程序语言:Java 2开发包:Sun Java (TM) Wireless Toolkit 2.5.2 for CLDCEclipse SDK Version: Java(TM) 2 Standard Edition(jdk1.5.0_14)IDE:eclipse 关于本作品的开发环境,整合J2DK+Eclipse+NLpack-eclipse + Eclipseme + Wireless Tool Kit,其安装配置过程为另一方面的内容也比较简单,在此不再赘述。可以这么说,JDK提供了虚拟机来运行应用程序,而WTK提供了仿真器, Eclipse及其它插件提供了开发测试程序代码的IDE集成开发环境。此外,这些资源都是免费的,可以从网上直接下载,在下面小节中将做简单的介绍。2.1.1关于Eclipse及EclipsemeEclipse是一个开发源代码的、基于java的可扩展开发平台。Eclipse相关的许可证是大多数基于Common Public License (CPL),CPL是一个为Open Source Initiative (OSI)所认可的许可证。由于Eclipse Foundation的建立,Eclipse的许可证将逐渐趋向于使用Eclipse Public License (EPL),EPL是一个与CPL相类似的许可证,正在进行OSI的认证工作。作为当今最流行的java开发IDE之一,java社群使用Eclipse以及基于Eclipse技术而来的IBM Websphere的开发者已经超过了半数。Eclipse本身只是一个框架和一组响应的服务,并不能够开发什么程序。在Eclipse中几乎每样东西都是插件。同时各个领域的开发人员通过开发插件,可以构建与Eclipse环境无缝集成的工具。eclipse的发行版都已经带有最基 本的插件,方便了开发人员。因此,除了搭建移动开发环境之外,也可以下载Jsp插件、Tomcat插件、Jboss插件来进行整合,以用于JSP、J2EE的开发。图2-1 Eclipse集成开发平台在/downloads/index.php可以免费下载到Eclipse的解压安装文件、语言包以及许多实用工具插件。EclipseME作为Eclipse一个插件,致力于帮助开发者开发J2ME应用程序。EclipseME并不为开发者提供无线设备仿真器,而将各手机厂商的实用仿真器紧密连接到Eclipse开发环境中,为开发者提供一种无缝统一的集成开发环境。在/上可以免费下载到EclipseME。2.1.2 关于Wireless Tool KitWTK(Wireless Tool Kit)是Sun公司针对J2ME推出的用于手机和Palm等移动设备的开发包,是除手机厂商的专用开发包外唯一的手机仿真器开发包。它通用性高,开发出的应用程序可保证能运行在大部分设备上,而不像专用厂商具有一定的不兼容性。虽然它没有强大的功能和完善的调试手段,但它提供运行仿真器的最基本组件,是其他IDE需集成采用的必备元素。当然,你可以从手机厂商下载相关的API及仿真器来进行开发。同样,WTK也是个免费软件,可以在Sun上得到下载。2.2 MIDP 2.0简介MIDP即移动信息简表(Mobile Information Device Profile)针对的是移动信息设备,或者体积较小、能力有限的手持设备(MID),这些设备的共性是具有用户接口即屏幕和输入机制。MIDP目标设备的典型例子就是手机。MIDP 2.0相较之前的1.0版本,加强了对用户接口、多媒体和游戏功能、网络连接功能的支持,主要包括以下几个方面:n MIDP 2.0提供的游戏API使得游戏本身可以充分地利用设备自身的图形处理功能。它的出现大大简化了J2ME游戏的开发工作,同时也使开发者能够更多地控制程序的图形处理功能。n 在通信方面,MIDP 1.0仅支持HTTP,MIDP 2.0增加了对HTTPS、报文、Socket通信以及串口通信的支持。此外,MIDP 2.0还支持Push体系架构,这样,手机能够收到来自服务器的报警、消息或者广播,并根据要求启动手机上的应用程序进行操作。n 支持0ver-The-Air(OTA)Provisioning,它使用户能够动态地部署和更新移动设备上的应用程序。n MIDP OTA Provisioning模型为移动服务提供商提供了单一、标准地部署MIDP应用程序的途径。该模型已经被众多技术领先的移动设备制造商和服务提供商所采纳。n MIDP 2.0增加了强大的“端到端”安全模型。一方面,MIDP 2.0支持HTTPS,可以对所传输的资料进行加密;另一方面,MIDP 2.0采用了和MIDP 1.0不同的安全机制,采用安全与来确保未经授权的MIDlet套件无法访问受权限控制的数据、应用程序以及其他网络和设备资源。2.3 J2ME概述J2ME是一个专门面向小型设备应用的简易平台,这些小型设备包括移动电话、PDA、网络电话、数字电视机顶盒、自动娱乐系统、导航系统、网络交换、以及家用自动电器等。J2ME的体系结构包括配置、虚拟机和简表3个部分,本设计是针对MIDP简表应用开发的。J2ME (Java 2 Micro Edition) 是Sun的Java2平台微型版,它被定义为“一种以广泛的消费性产品为目标的且高度优化的Java运行时环境。”近年来随着各种电子设备,尤其是移动通信设备的发展J2ME对设备的智慧化、多样化,提供了革命性的解决方案。随着手机的日益普及和对Java软件的支持,使得不同的手机可以运行同样的由Java开发的软件。Java平台演进到Java2后,Java平台分别针对不同领域的需求被分成四个版本,亦即J2EE、J2SE、J2ME以及JavaCard。其中J2ME定位在消费性电子产品的应用上。这个版本针对资源有限的电子消费产品的需求精简核心类库,并提供了模块化的架构让不同类型产品能够随时增加支持的能力。这个版本的应用层面相当广泛,会是未来Java平台发展的重点项目。J2ME在1999年的JavaOne开发人员大会上初次亮相,它的目标是面向智能无线设备和小型计算机设备的开发人员。J2ME的一个关键优点是,J2ME与所有支持Java的设备都是兼容的。支持Java的设备就是任何运行Java虚拟机的计算机。Motorola、Nokia等生产厂商都生产支持Java的设备。J2ME平台是由配置(Configuration)和简表(Profile)构成的。配置是提供给最大范围设备使用的最小类库集合,在配置中同时包含Java虚拟机。简表是针对一系列设备提供的开发包集合。在J2ME中还有一个重要的概念是可选包(Optional Package),它是针对特定设备提供的类库,比如某些设备是支持蓝牙的,针对此功能J2ME中制定了JSR82(Bluetooth API)提供了对蓝牙的支持。目前,J2ME中有两个最主要的配置,分别是Connected Limited Devices Configuration(CLDC)和Connected Devices Configuration(CDC)。作为第一个面对小型设备的Java应用开发规范,CLDC是由包括Nokia,Motorola和Siemens在内的18家全球知名公司共同协商完成的。CLDC是J2ME核心配置中的一个,可以支持一个或多个profile。其目标主要面向小型的、网络连接速度慢、能源有限(主要是电池供电)且资源有限的设备,如手机、PDA等。J2ME(Java 2 Micro Edition)是近年来随着各种不同设备,尤其是移动通信设备的飞速发展而诞生的一项新的开发技术。它的目标定位在电子消费产品与嵌入式设备上,对设备的智慧化、多样化,提供了革命性的解决方案。在可以搭载Java的终端设备中,移动电话可以说是最为普及的,随着无线通信业的发展,Java应用程序在通信、娱乐等应用上产生的手机增值服务逐渐体现出其影响力,对丰富人们的生活内容、提供快捷的信息起着不可忽视的作用。2.4 J2ME 3D技术简介3D技术已经比较成熟了,在桌面游戏中已经广泛应用该技术,并开发出出色的3D游戏。但在小型设备中,3D游戏的发展并不令人满意,主要原因是小型设备的有限资源不能满足3D技术所需求的高速的处理器,大量和快速的内存访问,以及高质量低功耗的图形加速卡,为此,各大厂商都纷纷推出自己支持3D的硬件和软件开发工具包。为方便开发人员进行3D技术开发,JSR-184标准M3G提供了一套简单的3D API,目前大部分移动电话厂商和研发机构支持该标准。2.4.1 M3G(JSR-184)M3G是J2ME的一个可选包,以OpenGL为基础的精简版一共有30各类,如图2-2所示,运行在CLDC 1.1/MIDP 2.0上(必须支持浮点数运算)。图2-2 M3G的类示意图M3G只是一个Java接口,具体的底层3D引擎一般由C代码实现。这种全新的的设计使3D技术变得不再繁琐,并且可以加入到J2ME的整体架构,保证了Java 3D技术强大的扩展性。下面简单介绍一下M3G开发包中的类:类 名描 述AnimationController控制动画序列位置、速度等因素。例如能够控制动画应用中灯光的闪光和移动AnimationTrack和动画特性中的KeyframeSequence关联,是一组使得动画系统能够直接刷新的变量Appearance一系列定义了网格(Mesh)或者精灵(Sprite3D)外观特性的对象Background定义了如何清空视角(Viewport),在保留模式下,或者当显示一个世界(World)时Camera一个定义了观察者位置和3D到2D投影角度的场景节点。摄影机总是面对z轴的负半轴(0,0,-1)CompositingMode外观Appearance的组成部分,封装了每个像素的颜色合成属性Fog外观Appearance的组成部分,封装了雾化的属性Graphics3D一个singleton类,它能够用来绑定要显示的内容,从而加以显示,所有关于3D图形的绘制都通过render()方法完成Group一个场景节点,以子节点的形式存储一系列无序节点Image2D2D图形,可以被用来当作纹理、背景或者精灵图片IndexBuffer定义了如何为一个几何物体连接顶点KeyframeSequence封装了动画数据,例如时间戳和关键帧的顺序。这些顺序决定了特定时刻的动画质量,并且这些动画数据可以被多个活动物体共享Light一个场景节点,用来描绘不同的光源,和材质属性一起决定了物体的颜色Loader加载并读取经过串行化的场景节点,从而构成整个场景。从M3G文件中读取3D数据是创建3D场景最方便的方式之一Material外观Appearance的组成部分,封装了用以计算光照效果的材质属性。其他涉及光照属性的类有Light、PolygonMode和VertexBufferMesh一个场景节点,描绘了一个用多边形构成的3D物体。它有MorphingMesh和SkinnedMesh两个子类MorphingMesh一个场景节点,Mesh类的子类,能够实现顶点的Mesh模型Node一个定义了所有场景类的抽象类。它有5种类型:Camera、Mesh、Sprite3D、Light、GroupObject3D一个定义了能被包含在World中的3D对象的抽象基类,包含World本身、其他场景节点、动画类、材质类等。除了Graphics3D、Loader、RayIntersection和Transform类外都是Object3D的子类PolygonMode外观Appearance的组成部分,封装了前后面的选择、多边形的填充方式、灯光估计、透视校正和阴影RayIntersection存储了一些关于网格Mesh和精灵Sprite3D的参考,以及一些关于交叉点的信息,无法从M3G档中加载SkinnedMesh一个场景节点,Mesh类的子类,能够实现骨骼动画的Mesh模型Sprite3D一个场景节点,描述了3D精灵的属性Texture2D外观Appearance的组成部分,封装了2D纹理Transform一个普通的44浮点型矩阵,描述了一个翻转变换Transformable2D纹理和节点的抽象基类。定义了操作节点和纹理的普通方法TriangleStripArray用序列数足定义了一组三角形(连续的三角形串)。在这个数足重,前3个顶点定义了一个三角形,每一个顶点和前3个顶点定义了一个新三角形。例如(2,0,1,4)定义了(2,0,1)和(0,1,4)两个三角形VertexArray顶点矩阵,定义了顶点位置、法向量、颜色和纹理坐标VertexBuffer顶点缓冲,用来存储一系列的顶点矩阵World一个特殊的场景节点,它使包含所有场景的根节点。在一个完整的场景中,所有节点直接或者间接地连接到World节点表2-1 M3G开发包中的类及其基本描述2.4.2 开发模式M3G支持两种3D开发模式:立即模式(immediate mode):在立即模式下,3D模型在程序中创建,较为繁琐。开发者必须手动渲染每一帧,从而获得较快的游戏速度,但代码繁琐。保留模式(retained mode):在保留模式下,开发者只需设置好关键帧,M3G提供一个Loader类,允许直接从一个单一的.m3g档中读入全部3D场景,剩下的动画由M3G完成,代码较简单,但速度较慢。M3G允许混合使用这两种模式。立即模式设计到很多3D概念及构造模型的原理,因此也是采用保留模式的基础。本设计采用立即模式来构造一个完整的3D迷宫游戏。第三章 设计作品思想、结构相关3.1 3D游戏开发概述设计3D迷宫游戏包括从高分辨率图形到快速动画的许多技术。尽管3D场景在这些不同的游戏中可能变化很大,但玩游戏的方法和设计游戏的基本技术确实类似的。场景中较明显的组成部分包括生成的墙壁、地板、天空、可移动的物体和静止的物体。当然这些游戏也充分利用了大量的其他技术,如声效和音乐、3D动画、故事、难度级别、秘密门等。大多数3D游戏提供多难度级别,使游戏者玩上几天甚至几星期。每级游戏都可以建立在不同的迷宫中。当一个游戏者以自己的方式成功的玩到了某一级的终点时,游戏继续进行到更高的一级,在那里游戏者要接受新的挑战。多级别非常重要,它可以让新的布景和迷宫出现并且使游戏看起来不让人厌烦。在这个方面,许多3D游戏是与2D类游戏相同的。他们让玩家在迷宫中搜寻到足够的物品,达到一定的分数才可以进入下一关。3.2游戏的策划很多开发者认为,手机游戏的策划不重要,这个观点是严重错误的,手机游戏的美术与程序开发工作量都非常有限,其表现力也受到非常大的制约,因此一款手机游戏的可玩性如何在某种意义上完全取决于游戏策划本身。本游戏的策划过程比较简单,游戏中玩家采用传统的第一视角观察3D场景,并且可以在迷宫中走动。游戏的任务是在最少的时间内走完迷宫,由于水平和时间的原因,本游戏没有使用复杂的多面体模型,而是仅仅使用平面来构造迷宫的墙壁和地板。游戏中的物体基本上包括地面和构成迷宫的墙壁,还有两个用来表示迷宫起点和终点的墙壁。整个场景用一个背景天空来模拟天空的效果。玩家定位在摄像机的位置,并且,在迷宫中来回移动。迷宫的地板定位在xz平面,游戏还为玩家提供了一个辅助功能,程序设置了另一个摄像机,它定位在高处,并且俯视下方。从高处看,整个迷宫实际上是一些由细线组成的障碍,红色方块表示玩家的当前位置。玩家的另一个辅助功能是能够让墙壁变得半透明。当按下Fire键,玩家前面的墙壁就变成半透明状,当玩家移动时,墙壁又会恢复原样。3.3游戏的准备工作游戏的准备工作同上是根据游戏策划,制作游戏所需要的图片。游戏开始将用一个Alert的方法实现一个闪屏,游戏场景主要由墙壁和地板组成,场景背景为一幅天空图案。开始和结束标志定位在迷宫的起点和终点,用来向玩家提示信息,两个标志分别用包含“Start”和“End”字样的长方形图片作为纹理;当玩家处于俯瞰模式下时,程序用一个红色的方块表示玩家当前的位置;另外还需有提示错误信息图片。以下是游戏中所用到的图片: splash.pngstart_label.pngend_label.pngbackground.pngwall.pnglocation.pngfloor.pngerror.png图3-1 游戏中所使用图片3.4游戏线程这个游戏是用MIDP 2.0开发的,因此游戏画布采用的是GameCanvas类。它包含了持续运行的线程,MIDP 2.0下的3D游戏的场规模式如下:while (playing)checkInput();draw3D(g);draw2D(g);flushGraphics();checkInput方法用来查询键盘状态,并且按照用户的输入进行响应,例如玩家的移动,和左右旋转。在draw3D方法中,场景通过绑定对象来显示,然后推进动画,并且调用render(world)方法,从而使游戏出现动画效果,该方法如下所示:tryg3d.bindTarget(g);/绑定对象bound = true;world.animate(int)(System.currentTimeMillis()-gameStart); /播放场景中动画g3d.render(world); /绘制3D场景finallyif (bound)g3d.releaseTarget();/释放Graphics3D所绑定的对象3.5游戏的流程游戏启动时,MIDlet对象会先显示一个闪屏,用户确定后用显示游戏菜单,菜单里包含相关的游戏选项。在一开始,选项只包含开始游戏和显示设备属性两个选项,当进入游戏后,如果玩家按下了非游戏键盘,则返回菜单,此时菜单里多了一个俯瞰模式的选项,该选项可以浏览整个迷宫地图。此外也允许玩家随时停止当前游戏并且开始新的游戏任务。选择显示设备属性能够在屏幕上显示设备对3D程序的支持情况。图3-2显示终端的3D属性3.6深度优先算法生成迷宫在平常游戏中,常常会碰到随即生成地图。在生成迷宫之前,先要熟悉迷宫俄数学表示方法。随即生成一个AB的迷宫,可以用矩阵mazeXY来表示。这里举两个例子,其中“”表示障碍物(即墙壁): 图3-3迷宫的数组构成例1 图3-4迷宫的数组构成例2以图3-3为例,可以用一个77的矩阵来表示。1 1 1 1 1 1 10 0 0 0 0 0 11 1 1 1 1 0 11 0 0 0 1 0 11 0 1 1 1 0 11 0 0 0 0 0 01 1 1 1 1 1 1其中,0代表玩家可以移动的空间,1代表迷宫障碍物,可以使墙壁或其他。随即生成迷宫的方法很多,生成方法可采用深度优先算法或广度优先搜索算法,较常用的是深度优先算法。具体实现方式可以采用递归搜索或非递归搜索。递归搜索需要占用栈的空间,有可能造成栈空间耗竭而产生异常,不过在现实应用中,这种情况很少出现,而非递归搜索则不存在此问题,但代码实现较为复杂。3.6.1深度优先遍历的基本方法:假如要从节点1开始采用深度优先算法来遍历如图3-5所示的这个地图。图3-5地图首先准备一个栈Stack s,并且预定义3种状态:A未被访问;B正准备访问;C已经访问。(1)访问1,把它标记为已经访问,然后将与它相邻的并且标记为未被访问的点压入s中,并标记为正准备访问,此时系统状态如下所示。已经被访问的点:1未被访问的点:3、4、6、7、8、9、10正准备访问的点:2、5 (存放在Stack中)(2)从Stack中拿到第一个元素2,标记为已访问,然后将与它相邻的并且标记为未被访问的点压入s中,并且标记为正准备访问,如图3-6所示。图3-6完成节点1到节点2此时系统状态如下:已经被访问的点:1、2未被访问的点:4、6、7、8、9、10正准备访问的点:3、5 (存放在Stack中)(3)从Stack中拿出第一个元素3,标记为已经访问,然后将与它相邻的并且标记为未被访问的点压入s中,并标记为正准备访问,如图3-7所示。图3-7完成节点2到节点3此时系统状态如下:已经被访问的点:1、2、3、4未被访问的点:8、9、10正准备访问的点:7、6、5(存放在Stack中)以此类推,重复上面的动作,直到Stack为空,即所有节点都被访问。最后可能的遍历情况如图3-8所示:图3-8遍历所有节点3.6.2深度优先算法的基本思想:1 从图中某个顶点v0出发,首先访问v0。2 找出刚访问过的顶点vi的第一个未被访问的邻接点,然后访问该顶点。重复此步骤,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论