资源描述
手机JAVA游戏的开发
The Development of Mobile JAVA Game
手机JAVA游戏的开发
摘要 J2ME虚拟机在手机上的普及为手机游戏的发展提供了最适合的土壤,随着MIDP2.0的发布,特别是其中新增的GameAPI使得手机游戏开发者可以更专注于游戏性的增强而不再是繁琐的动画处理与地图设计,让开发过程变得更加方便迅捷,它是手机游戏发展的重要里程碑。
手机的拥有量远远大于电脑,随着智能手机的出现,手机软件的应用范围和
需求量正在迅速扩大,形成了一个新兴的领域。近几年刚刚出现的 Symbian操
作系统在智能手机操作系统市场占有率约80%,成为业界的领跑者。
论文按照软件工程的流程对连连看游戏进行了设计,并使用面向对象的方法
进行了程序的类设计和代码编写。首先从连连看游戏的需求入手,对手机硬件、
操作系统进行选择,得到总体设计方案。接下来把该游戏的用户需求进行了汇总,
并根据总体方案和需求分析进行详细设计。详细设计中对手机游戏连连看的类进
行了设计。对其中需要实现的功能包括菜单界面设计,程序界面,时间控制,布
局算法,连通算法,屏幕绘制,精灵动画进行了设计。
该游戏采用矩阵数组来存储和调用相应的设计数据,通过随机产生数值函数(理想)初始化数据。游戏的开发环境是基于J2ME平台的wireless_toolkit(无线开发工具包),目标设备是针对支持CLDC及MIDP2.1的手机。
关键字:J2ME 手机游戏 连连看开发
37
The Development of Mobile JAVA Game
Abstract: The J2ME virtual machine has provided the most suitable soil platform for handset game development becouse of its popularization on mobile, Along with the release of MIDP2.0, specially the newly added additional GameAPI. game developor can focus effort on game performance enhancement but not tedious animation processing and the map design, which lets the development procedure become more convenient and fast.J2ME is the important milestone for handset game evolution.
Phone ownership is far greater than the computer,with the emergence
of smart phones,cellphone software,the scope of application and demand
is expanding rapidly,forming a new field.In recent years appears in the
Symbian OS smart phone operating system market share of about 80%,makingit the industry leader.
Papers according to the software engineering process link game design,
and use of the object—。oriented method of procedure in the preparation of
design and code.First,from the start with the needs of 1ink game,mobile
phone hardware,operating system choice,and by design programmers.Next
to the game needs of users are summarized.and in accordance with the
overall plan and demand analysiS of the detailed design.Detailed design
of the cel 1 phone 1 ink game class has been designed.Of the need to achieve
one of the features include menu interface design, programming interface,
time control,layout algorithm, connectivity algorithms, screenrendering,animation wizard for the design.
This game adopt matrix array to storage and call the corresponding design data, through random generation numerical function (ideal) initialized data. The development of the game environment is based on the wireless_toolkit J2ME platform (wireless development kit), target equipment is aimed at MIDP2.1 mobile CLDC and support.
Key words: J2ME Mobile Game Development
目 录
重新整理目录!页码右对齐。
引言 1
1.1研究背景及选题意义 错误!未定义书签。
1.2国内外概况1 引言 1
2 需求分析
2.1游戏介绍 2
2.2环境介绍 2
3 概要设计 5
3.1算法设计 5
3.2游戏架构设计 7
3.2.1游戏的类结构 7
3.2.2游戏操作流程 8
4.详细设计 9
4.1主类LLKMIDlet 9
4.2矩阵LLKMatrix类 12
4.2.1构造函数 12
4.2.2初始化矩阵 12
4.2.3设置和获取元素 15
4.2.4方块自动重排 16
4.3游戏画布LLKCanvas类 17
4.3.1构造函数 17
4.3.2游戏计时 18
4.3.3屏幕绘制 18
5用户使用手册 20
6结论及尚存在的问题 23
6.1游戏功能 23
6.2开发方法 23
6.3真机测试 24
6.4存在的问题 25
7参考文献 25 1
引 言
作为3G的到来让人们的目光被吸引到新兴的互联网终端到—一个新鲜的手机上。移动电话随身性让玩家玩这个游戏,可以随时随地、随意,在日常的业余时间” 见缝插针”即可。可以说,手机游戏就可以“普及”,但业内分析师们也把握此行业一般的乐观态度。值得注意的是,新兴市场将会成为更重要的手机游戏的领土。
新的报告显示,手机游戏市场真正金字塔稳步增长,从2005年到2010年用户数增加了55万,而总上涨亿增加到98亿美元。报告预计,将于2014年,市场规模有望达到180亿美元。
在发达国家,由于手机生意开使早发展成熟,手机游戏市场前景将继续价值:在发展中国家,和手机一样穿透率的增加及相关业务模型支持、市场将逐渐被激活。发展中国家为这一市场的贡献颇大,新用户、印度和中国占了很大比重。
推动市场发展的有如下潜在的因素:
*更好更快的无线网络,且易于操作的移动终端改善了用户的体验;
*触摸屏、三维动画的处理能力和在线互动式能让游戏开发商把游戏做的更好
应用。
*苹果店面模式的刺激。
Java 2 Micro Edition (J2ME)是一种针对移动电话和PDA这样的小型设备的Java语言。大部分的手机厂商都迫切希望Java手机推广应用。上千万的Java手机已经到了消费者的手中。
相比之下,桌面J2ME被严重的限制,但是这已经大大增强了能力,手机支持这个游戏。它具有较好的控制比SMS或WAP、允许使用子图形界面的动画,而且能被连接到一个无线远程服务器。
移动电话的普及以后,它成为好手机游戏开发环境,在这里,我们将一个详细的研究,对J2ME开发一个游戏。
J2ME不是电话唯一的编程语言,配置的语言也很多,在一些地区,如北美的性能(二进制运行时间高通酿造无线,用于无线应用二元运算环境)和一些韩国移动运营商的支持GVM标准来过电话。
连连看游戏属于益智类游戏,适用于各个年龄层的人群,可以使人们在紧张
的工作之余放松一下心情,具有一定的应用和商业价值。该游戏适合于在手机上
运行,由于手机硬件资源有限、屏幕小、游戏时间短等特点,使得手机游戏以剧
情简节、操作方便,有易于智力开发为主体。该游戏引掣可以很方便的用于其它
的棋类、牌类等游戏的开发。
手机的内存容量和处理速度还没有达到电脑的水平,占用资源少,效率高的
手机软件需要使用可以和硬件接口的专用编程语言来编写,JAVA等通用编程语
言并不具有这一功能。在介绍该操作系统的参考书籍只有很少的几本,而且大多数停留在简单的介绍阶段。从搭建编程环境开始,遇到问题都不得不从国外的英文网站去寻找答案。看到的手机软件几乎都是国外设计开发的,国内的很少。连一个简单的记事本软件都不支持中文输入。希望连连看游戏对于国内手机软件的开发能起到一定的借鉴与推动作用。
第1章 开发环境
基于JAVA的手机游戏”连连看”,是使用JAVA ME 框架进行开发的。下面对JAVA ME的相关技术进行介绍:
1.1 基本概念
1.1.1 J2ME
J2ME(Java Platform ,Micro Edition);Java2平台微型板。Java ME 以往称作J2ME(Java Platform,Micro Edition),是为机顶盒、移动电话和PDA之类嵌入式消费电子设备提供的Java语言平台,包括虚拟机和一系列标准化的Java API。它和Java SE、Java EE一起构成Java技术的三大版本,并且同样是通过JCP(Java Community Process)制订的。虽然 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等。而CDC则是主要用于运算能力相对较佳、在电力供应上相对比较充足的嵌入式装置 (比方说冷气机、电冰箱、电视机机顶盒 (set-top box))
CLDC(Connected,Limited Device Configuration); 连接受限设备配置,是为运行在资源非常有限的设备(例如寻呼机或者手机)上的J2ME应用程序制订的架构。规范内容包括目标机器的特性、虚拟机规范和基本的API等等。 有1.0和1.1两个版本。
CDC(Connected Device Configuration): 连接设备配置
MIDP(Mobile Information Device Profile): 移 动信息设 备描述,对于 Java ME 平台,MIDP 定义了一个标准的 Java API 集合,此集合与联网的受限设备配置 CLDC 一起提供了一个面向移动信息设备(如移动电话、双向寻呼机和无线个人电脑记事)的完整 Java ME 应用程序运行环境。
KVM(The K Virtual Machine);K虚拟机,KVM 交换机通过直接连接键盘、视频和鼠标 (KVM) 端口,让您能够访问和控制计算机。KVM 技术无需目标服务器修改或软件。这就意味着可以在 Windows 的 BIOS 环境下,随时访问目标计算机。KVM 提供真正的主板级别访问,并支持多平台服务器和串行设备。
1.1.2 CLDC/MIDP
J2ME把设备分为两类:
1 连接设备(Connected Device):主要针对于那些有电源且电力充裕的较大设备。例如:电视机,冰箱等;
2有线连接设备(Connected,Limited Device):主要针对于使用电池,小型的设备,例如:手机,PDA等。
Sun公司又把J2ME的实现分为两层:Configuration和Profile。
1)Configuration包括虚拟机(Virtual Machine),核心的类库与API。
Configuration层定义一个Java虚拟机的特性与Java类库的最小子集。也就是说,Configuration层提供了开发人员一个最基础,最核心的Java平台。因为J2ME把设备分为两类:连接设备(Connected Device)和有限连接设备(Connected,Limited Device).对应这两种设备就有了两种J2ME Configuration。分别为CDC(Connected Device Configuration )和CLDC(Connected Limited Device Configuration)。这里请注意,CDC使用的虚拟机为JVM,而CLDC使用的是KVM(The K Virtual Machine)。KVM是sun专门使用16/32位RISC/CISC微处理器或控制器,并其可用内存为160KB~512KB的设备而开发的。KVM比较小,通常只有128K或更少。
2)Profile层也包含一组API,主要针对特定的某一族系的设备而定义。Profile层在特定的Configuration层上实现,而我们程序员则负责在特定的Profile上编写应用程序。对于手机,pda等Connected Limited Device,它们的Profile层称为MIDP(Mobile Information Device Profile).于是MIDP与CLDC和在一起就构成了一个完整的J2ME架构。顺便说一句,对于MIDP上的应用程序sun也有一种独特的叫法,把它们叫做MIDlet.
1.1.3 J2ME框架图
相比之下,J2ME和J2EE的J2SE整体经营环境,目标更加多样化,但其中的每一种产品的使用更有一个单一的,和资源约束的条件下也更严格。为了实现标准化和兼容性和设法满足不同的需求,框架结构分为J2ME配置,相同的轮廓和任何(可选包)。他们的结合形成了特定的取舍操作环境。
Configuration主要是对设备纵向的分类,分类依据包括存储器和处理能力。其中定义了虚拟机特性和基本的类库。已经标准化得Configuration有 —Connected Limited Device Configuration(CLDC)和Connected Device Configuration(CDC)。
Profile建立在Configuration基础之上,一起构成了完整的运行环境。它对设备横向分类。针对特定领域细化市场,内容主要包括特定用途的类库和API。CLDC上已经标准化的Profile有Mobile Information Device Profile(MIDP)和Information Mobile Profile(IMP),而CDC上标准化的Profile有Foundation Profile(FP)、Personal Basis Profile(PBP)和Personal Profile(PP)。可选包独立于前面两者提供附加的、模块化的和更加多样化得功能。目前标准化得可选包包括数据库访问、多媒体、蓝牙等等。
1.2开发环境介绍
开发Java ME 程序一般不需要特别的开发工具,开发者只需要装上Java SDK 及下载免费的 sun Java Wireless Toolkit 就可以开始编写Java ME 程式,编译及测试,此外目前主要的IDE(Eclipse及NetBeans)都支持Java ME 的开发,个别的手机开发商如NOKIA及Sony Ericsson都有自己的SDK,供开发者在开发出兼容于他们的平台的程序。
1.2.1软、硬件资源的需求
PC系统:Microsoft Windows XP Professional SP2
开发包及模拟器:JDK6.0、wireless_toolkit-2_5_2(自带模拟器)
图片处理:PHOTOSHOP
集成环境及需要插件:Eclipse3.2。EclipseME1.7.7
1.2.2J2ME类的使用
本游戏中主要用到的类及作用:
Java.util.Timer:Java定时器(Java.util.Timer)有定时触发计划任务的功能,通过配置定时器的间隔时间,在某一间隔时间段之后会自动有规律的调用预先所安排的计划任务(Java.util.TimerTask)。
Java.util.Random:方法Random()用来创建一个新的随机数生成器。此构造方法将随机数生成器的种子设置为某个值,该值与此构造方法的所有其他调用所用的值完全不同。此游戏中用在数组初始化中。
Javax.microedition.midlet.MIDlet:用来创建构造主类。
Javax.microedition.icdui,*;绘制游戏的画面。
第2章 需求分析
2.1 需求分析介绍
需求分析是软件生命周期的一个重要阶段,它最根本的任务是确定为了满足用户的需要系统必须做什么。具体的说,应该确定系统必须具有的功能和性能,系统要求的运行环境,并且预测系统发展的前景;必须仔细分析系统中的数据,既要分析系统中的数据流又要分析长期使用的数据储存。通过分析应该得出用数据流图、ER图、数据字典和简洁的算法描述所定义的详细的系统逻辑模型。图形工具比文字叙述能更好地表达重要的细节,数据流图能够极好地概括描述一个系统的信息。ER图能直观、准确地描绘系统的数据要求。数据字典也是重要的,数据是把一个系统的各个组成元素连接在一起的“黏合剂”,为了成功地把所有系统元素连接起来,这些元素必须共享公共的数据定义,数据字典正是这些数据定义的集合。算法同样是重要的,分析的目的是确定系统必须做什么,广意的说,任何一个计算机系统的基本功能都是把输入数据转变成输出信息,算法定义了转变的规则。因此,没有对算法的了解就不能确切知道系统必须做什么。软件的需求分析是从用户的业务中提取出软件系统能够帮助用户解决的业务问题,通过对用户业务问题的分析,规划出我们的软件产品。这个步骤是对用户业务需求的一个升华,是一个把用户业务管理流程优化,转化为软件产品,从而提升管理而实现的质的飞跃,这一步是否成功,直接关系到开发出来的软件产品能否得到用户认可,顺利交付给客户,客户能否真正运用我们的产品帮助他解决业务或管理问题。
需求分析的结果是软件开发的基础,必须仔细验证它的正确性,开发人员必须和用户取得完全一致的意见,需求分析的文档应该被用户所确认。然而这并不意味着分析员应该不加分析地全盘接受用户提出的所有要求,对用户提出的笼统要求应该加以细化,对用户提出的含混要求需要进一步澄清,对用户提出的不切实际的要求必须做深入细致的解释说服工作,以便动员用户放弃不合理的要求。
为了提高软件质量,确保软件开发成功,降低软件开发成本,一旦对目标系统提出一组要求之后,必须严格验证这些需求的正确性。一般来说,应该从以下述四个方面进行验证:
一致性 ---所有需求必须是一致的,任何一条需求不能和其他的需求矛盾。
完整行 ---需求必须是完整的,规格说明书应该包括用户需要的每一个功能或者性能。
现实性---指定的技术应该是用现有的硬件技术和软件技术基本上可以实现的。对硬件技术的进步可以做些预测,对软件技术的进步则很难做出预测,只能从现有的技术水平出发判断需求的现实性。
有效性---必须证明需求是正确有效的,确实能解决用户面对的问题。
2.2 游戏的功能需求
本课题所开发的这款游戏是被称为“连连看”。放两张牌都是一样的,在三根线在一起能消除。在规定的时间内,所有的整体布局都消除后,就能顺利的进入下一关。介绍这个游戏特定的规则:
1、消除模式:不超过3线在,选择不同的连接两个一模一样的,当玩家图片上的设计图片框标志的形象;当这位球员模式在别新闻界是,是否有同样的模式是一样,如果发现画两个模式两种模式间的连线,和消除。
2、提示:在找不出可以被消除的图片时候,可以点击提示,提示后,提示的数量相应的减少一次。
3、定时器:达到一个定时器,为比赛倒计时使用,每轮比赛的时间游戏,在达到6分钟的时间后为超过规定本场比赛,则为失败。
4、组合转变:当图案消失了,剩下的模式正在向某个方向图片来填补其空白了,其余的分别,移动,上、下、左右靠拢,直到顺利过关。
5、游戏两级别:"轻松惬意"级别对游戏没有作任何限制,比较适合MM玩,"快乐挑战"级别属于高难度挑战级别,游戏开始会产生68或72张图片,并且图片被隐藏起来,游戏地图每45秒会自动刷新。
第3章 概要设计
3.1 算法设计
连连看的算法主要是判断两个单元格是否可连。按照连连看规则,两个单元的内容首先必须是相同的;其次,两个单元格之间边疆的折点不超过两个(连接线由水平线和垂直线组成)。
3.1.1两图案间可消除的连接情形
相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位
置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素
图3.1两图案间可消除的连接情形
如图所示可以发现,如果有折点,每个折点必定有且至少有一个坐标(X或者Y(其中一个单元格是相同的,也就是说,折点必定在两个各单元格所长的X或者Y方向上,这也是连连看算法的一个出发点)。
3.1.2图片布局信息的表示
可以将游戏中的图片按矩阵看做是一个二维数组,其中的所有的图片可以看做是数组中的一个具体的元素,那么,游戏中相同的图片可以看做是数组中不同位置两个值相同的元素。
对于矩阵中的空白部分,将其对应于数组中的一个特殊的值如“-1”。空白区域是可以联线的,所有当边疆的等于-1的数组元素的横向索引或者纵向索引相同时,可以认为这是一条直线。
【0】【0】【0】【0】
【0】【-1】【0】【0】
【0】【-1】【0】【0】
【0】【-1】【0】【0】
当数组中两个位置的值相同,并且两个单元格间只需要用不超过3条直线就能连接起来时,就让这两个位置的值变为-1,如果数组中全是-1.就认为游戏已经结束。
用代码的形式表示:
If()
{
当前点=用户选择点
If(存在上次选择点)
{
If(当前点与上次选择点可消除)
{
消除两点;
上次选择点=null;
If 所以点的值都等于-1)
{
游戏结束;
}
}
}
}
电数组初始化时,先按顺序排列。这样能简单地确保同样的图案出现的次数是偶数次,然后随机交换数组中的内容,图案种类越多,难度越大。
3.1.3图片消除规则
根据游戏规则,如果两个单元格之间可以用不出超过3条直线(也可以不超过两个转折的直线)连接起来,这两个单元格就可以消除,现在从算法的角度来分析一下所有可能的情况。
首先一种可能是,两个点之间需要1条直线连接。如果两个单元格之间只需要1条直线能过连接起来,那么它们的横坐标或者纵坐标必定相同,有了这个条件,判断是否只需要1条直线连接就简单了许多。
其次一种可能是,两点之间需要2条直线,如图,A、B两点如果需要2条直线连接起来,有可能有两种方式,但通过观察可以发现,转折点C或者D的坐标是A和B点坐标的组合。因此,可以通过其中的一个点,例如A点,向B点寻路,如果这个过程中发现存在连通路径,则可以相连。
图3.2两点之间需要2条直线
如下图所示,说明两点间3条直线的所有可能性,和2条直线的情况相比,转折点是2个,看上去虽然有点麻烦,但是也不难处理。
值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位
置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做是数组中不同位置两个值相同的元素相同的图片可以看做
图3.3两点间3条直线
由图可以看出,A、B如果要通过3条直线相连,则必须要C、D两个拐点,如果能确定下C、D,问题就基本解决了。
由于矩阵的先列数不是很多,可以采用遍历的方法扫描是否存在CD这样的通路,如果存在,则进一步判断,A、B两点是否存在到达CD的通路AC和BD,如果三次判断都存在,则判断可连接。
消除这两个单元格时,只需要将两个单元格的值为-1即可。
3.1.4游戏结束的判断
这个主要表现两个问题:
每一次消去图片后,均将相应位置的flag数组元素置0,且遍历flag数组是否为0。如果全部为0,则游戏结束。 当游戏结束时,直接向玩家发送gameover指令。
解决的办法:首先,每次消去图片后仅将图片数目(gamevalue变量控制)减2,当为0时,将gameover变量设为真值。而每次都向函数发送图片数目,当图片数目值为0时,即判断玩家已经胜利。
3.2 游戏框架设计
3.2.1 游戏的类结构
游戏共分为6类组成,他们是:
Gamemap:显示游戏画布并启动游戏线程。
Gamemenu:显示游戏菜单
Kyodai:显示游戏画布
LLKMatrix:保持一个矩形数组,并且判断两个单元格是否可连接
Midiplayer:播放器
Queryquit:显示游戏结束界面
Gamemap(主类)
Gamemenu
Kyodai
Queryquit
Midiplayer
LLKMatrix
图3.4游戏的类结构
3.2.2 游戏操作流程
程序运行后,首先显示游戏菜单,玩家可以选择“开始游戏”选项来到达游戏画布,如果游戏失败,则出现提示画面,玩家确认后返回游戏菜单;如果玩家顺利通过,则显示游戏胜利画布,玩家确认后也返回菜单,用户界面的大体流程如下图所示
主菜单
游戏画布
胜利画布
启动
失败
图3.5游戏操作流程
第4章 详细设计
4.1 主类Gamemenu的设计
主类主要功能是显示游戏菜单,显示游戏画布和创建,在程序启动startApp()方法中,将显示游戏菜单。Exit()方法用来退出游戏,当用户选择退出游戏时调用。StartGame()方法根据菜单选择的难度级别创建并显示游戏画面。
游戏"本游戏提供两种模式供玩家选择,"轻松惬意"对游戏没有作任何限制,比较适合MM玩,"快乐挑战"属于高难度挑战级别,游戏开始会产生68或72张图片,并且图片被隐藏起来,游戏地图每45秒会自动刷新(玩家也可主动刷新地图),每次刷新后图片再次隐藏,如果用户没有在规定的时间和步数内完成游戏(时间=图片*3,步数=图片*6),则游戏失败,如果玩家能够完成游戏,则奖励1250分!此种模式适合喜欢挑战的GG。
操作说明:"方向键或2/4/6/8键进行移动,左软键/确认键/5键选择图片,0键刷新地图,游戏过程中可以随时按右软键回到菜单。存放在字符串ope里面,并用operate()函数调用
开始游戏
高手排行榜
音效设置
游戏模式
退出游戏
静音
随机
轻松惬意
快乐挑战
游戏说明
图4.1游戏主菜单
4.1.1 用伪代码来描述程序的结构
现在,我们用伪代码来描述一下游戏,假设用户开始了游戏:
准备地图
while ( 等待用户选择点 ) {
当前点 = 用户选择的点
if ( 存在上次选择的点 ) {
if ( 当前点与上次选择的点可消除 ) {
消除两点;
上次选择的点 = null ;
if ( 地图上已没有可消除的点 ) {
游戏结束;
}
}
else {
上次选择的点 = 当前点;
}
}
else {
上次选择的点 = 当前点;
}
}
游戏结束;
4.1.2 确定程序需要的模块
当伪代码完成后,并且在我们的大脑里转了几圈发现没有问题后,现在就可以开始进行模块的划分工作
展开阅读全文