J2ME手机连连看游戏报告

更新时间:2024-01-08 20:14:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

摘 要

J2ME虚拟机在手机上的普及为手机游戏的发展提供了最适合的土壤,随着MIDP2.0的发布,特别是其中新增的GameAPI使得手机游戏开发者可以更专注于游戏性的增强而不再是繁琐的动画处理与地图设计,让开发过程变得更加方便迅捷,它是手机游戏发展的重要里程碑。

随着社会节奏的加快,平常工作的竞争强度也加大,生活的压力也跟着加重。所以休息时或下班后大家都需要个休闲的娱乐工具,来放松自己,缓解自己的压力,消除紧张的疲劳状态。连连看游戏是一种意趣休闲的小游戏,不仅能调节精神,还能在游戏中锻炼我们的眼力视野,注意力的专心的程度,开发我们的思维能力,同时可以充实自己,向高等级挑战,培养我们面对困难时自己所具有攻克困难的信心。

本文完整地描述了如何在Jbuilder平台应用J2ME技术,特别是MIDP2.0中新增加的GameAPI在手机上实现连连看游戏(原型为电脑上游戏《连连看》),核心在于其GameMap类这一模块的构建。其中涉及到的技术有Midlet框架、游戏状态机、线程、精灵、地图、关卡、程序优化及兼容性设计等。

关键词:J2ME,Midlet框架,连连看,地图

ABSTRACT

J2ME virtual machine on your phone penetration of the cell phone game development offers the most suitable soil, With MIDP2.0 releases, particularly with the new GameAPI makes mobile phone games developer can concentrate more on the game instead of strengthening cumbersome to deal with the animation map is designed to allow the development process more conveniently and quickly, It is a important milestone in the development of cell phone games.

With the quickening of social rhythm, the intensity of competition of working usually is strengthened, the pressure of life follows to aggravate too. So everybody needs an amusement tool of recreation when coming off duty or having a rest, relax one, alleviate one's own pressure, dispel the tense fatigue state.

This paper describes the integrity of how the Jbuilder platform in J2ME technology, especially MIDP2.0 newly added GameAPI on cell phones to achieve a LLK-Game (prototype online computer game \the core of its game GameMap class building. With respect to the technology Midlet framework, state game machine, thread, clever, maps, hurdles Process optimization and compatibility design. The first chapter describes the J2ME games, and the paper agreed terms; The second chapter describes the development of the game and to use the platform of the main technologies; Chapter III of the game for a simple needs analysis; Chapter 4 is a concrete realization of the game, and describe some of the key technology; Chapter 5 is about the process of summing up and how to finish this design.

KEY WORDS:J2ME,MIDlet framework,LLK, maps

基于J2ME的手机连连看游戏开发

目 录

1引言 ................................................................................................................. 1 1.1编写目的 ................................................................................................... 1 1.2开发背景 ................................................................................................... 1 1.3项目开发目的 ........................................................................................... 1 1.4项目提出意义 ........................................................................................... 2 1.5参考文献 ................................................................................................... 2 2总体设计 .......................................................................................................... 2 2.1需求分析 ................................................................................................... 2

2.1.1功能需求........................................................................................................... 2 2.1.2开发环境需求 ................................................................................................... 3

2.2运行环境 ................................................................................................... 3 3开发平台及开发技术 ...................................................................................... 4 3.1 J2ME基础知识 ........................................................................................ 4 3.2开发工具和环境搭配 ............................................................................... 4

3.2.1开发工具........................................................................................................... 4 3.2.2环境搭配........................................................................................................... 5

4详细设计 .......................................................................................................... 5 4.1界面详细设计 ........................................................................................... 5 4.2功能详细设计 ........................................................................................... 8 4.3打包测试 ................................................................................................. 14 5结论 ............................................................................................................... 14

基于J2ME的手机连连看游戏开发

1引言

1.1编写目的

本报告是对连连看游戏进行详细设计,是系统实现的出发点,是后续开发步骤及软件维护工作的基础,报告用于沟通用户,加深开发人员对系统的理解,使得程序员能够根据本报告实现系统,本报告将成为以下各开发阶段的参考和约束文档。

1.2开发背景

随着技术对游戏经验的促进,游戏市场持续增长。越来越多的人开始认为,经过了许多人共用一台计算机的大型主机时代,一人一台计算机的个人PC时代之后,下一个时代就是一人多台计算设备的普及计算时代(Ubiquitous Computing,IBM称之Pervasive Computing)。计算设备将从单一的PC扩展到各种各样的大小和功能,从家庭消费电子产品,到个人随身携带,穿着,车载的各种移动信息处理设备,多样化是这个领域的最大特点。\一次编写,到处运行\的平台无关性,对网络,多重设备间联网的机制(JINI)显然对这个领域是至关重要的软件条件。这个领域内的Java标准就是J2ME。

1.3项目开发目的

本设计开发一个基于J2ME的手机连连看游戏。主要包括以下模块:游戏引擎模块、游戏界面模块。要求学生按照软件工程的方法,从需求分析入手,到概要设计、详细设计,然后编码、测试,最终完成。能够培养学生理解并掌握软件开发基本流程和方法,掌握基于J2ME的基本开发技术、游戏开发技术。

第1页 共14页

基于J2ME的手机连连看游戏开发

1.4项目提出意义

随着社会节奏的加快,平常工作的竞争强度也加大,生活的压力也跟着加重。所以休息时或下班后大家都需要个休闲的娱乐工具,来放松自己,缓解自己的压力,消除紧张的疲劳状态。连连看游戏是一种意趣休闲的小游戏,不仅能调节精神,还能在游戏中锻炼我们的眼力视野,注意力的专心的程度,开发我们的思维能力,同时可以充实自己,向高等级挑战,培养我们面对困难时自己所具有攻克困难的信心。

1.5参考文献

[1] 詹建飞.J2ME 开发精解. 北京.电子工业出版社.2006.1 [2] 张小玮.J2ME无线平台应用开发. 北京:.清华大学出版社.2004 [3] 张小玮著. J2ME无线平台应用开发. 清华大学出版社. 2003年11月

2总体设计

2.1需求分析 2.1.1功能需求

为了便于游戏者操作,游戏的界面简洁明了,控制区和操作区分别在游戏界面的上部分和下部分,这样游戏者不至于在进行游戏时搞混。控制区由一排按钮组成,里面包括游戏的模式选择,游戏的开始、暂停,游戏成绩分数点,游戏的帮助主题以及游戏的设置选项。游戏开始由函数调用来完成游戏图片的加载,随机产生图片排列。游戏操作区是用手机的上下左右键来控制图片的移动,用中间键作为选中键,当连续选定两个相同图片后,且两者的连线在算法允许消去的范围内,则消去这两个相同的图形。当游戏者一时找不到可消去的相同的图片时,就可以利用控制区中的提示按钮,则会随机的产生一对可消去的图片。当游戏中还有图片且不可消去时,则可利用控制

第2页 共14页

基于J2ME的手机连连看游戏开发

区中重新洗牌按钮,则会把存在的图片打乱后重新组合,就可以继续游戏。

图3-2数据流图

图3-3 数据流图

2.1.2开发环境需求

为了游戏者安装的方便以及游戏的兼容性,考虑到游戏者大多数用的都是Windows操作系统,游戏在Windows操作系统下开发,把游戏的兼容性问题降低到最低限度。游戏是Eclipse的环境下开发的。

2.2运行环境

(1) 设备

微机一台,CPU:Intel 奔腾4以上版本; 内存:512MB以上; 硬盘:20G; 打印机:1台。 (2) 支持软件

适用操作系统:Windows XP以上Windows操作系统。 运行软件:jdk1.60 + Eclipse3.2+wireless 2.5.2。

第3页 共14页

基于J2ME的手机连连看游戏开发

3开发平台及开发技术

3.1 J2ME基础知识

J2ME,即Java 2 Micro Edition,是SUN公司推出的在移动设备上运行的微型版Java平台,常见的移动设备有手机,PDA,电子词典,以及各式各样的信息终端如机顶盒等等。最重要的移动终端当然是手机了,因此,我们主要讨论手机相关的J2ME规范。

J2ME是Sun公司为嵌入式开发所定义的一个框架,一系列标准的规范所组成。所以J2ME是一个协议簇,而不是单一的规范。

3.2开发工具和环境搭配 3.2.1开发工具

高级的MIDP应用程序开发工具能够帮助开发人员简化J2ME开发过程,包括Sun提供的官方开发工具WTK和手机厂商提供的专属SDK。 (1) J2ME Wireless Toolkit:

WTK 的全称是Sun J2ME Wireless Toolkit —— Sun的无线开发工具包。这一工具包的设计目的是为了帮助开发人员简化j2me的开发过程。该工具箱包含了完整的生成工具、实用程序以及设备仿真器。 (2) J2ME 集成开发工具Eclipse

Eclipse是一个开发源代码的、基于java的可扩展开发平台。Eclipse本身只是一个框架和一组响应的服务,并不能够开发什么程序。在Eclipse中几乎每样东西都是插件,实际上正是运行在Eclipse平台上的种种插件提供我们开发程序的各种功能。同时各个领域的开发人员通过开发插件,可以构建与Eclipse环境无缝集成的工具。

EclipseME作为Eclipse一个插件,致力于帮助开发者开发J2ME应用程序。EclipseME并不为开发者提供无线设备模拟器,而将各手机厂商的实用

第4页 共14页

基于J2ME的手机连连看游戏开发

模拟器紧密连接到Eclipse开发环境中,为开发者提供一种无缝统一的集成开发环境。

3.2.2环境搭配

(1) WTK:由于WTK自身并没有附带Java的运行环境JDK,所以,在WTK安装之前你需要安装自己的JDK 安装JDK 1.4.2

安装J2ME Wireless Toolkit (J2ME WTK) 2.5.2 参考文章:《搭建开发平台WTK》

(2) Eclipse:除了Eclipse与EclipseME之外,你还需要java运行环境和一些手机模拟器来完成整个搭建工作安装JDK 1.4.2 安装Eclipse SDK 3.1 安装EclipseME 1.0

参考文章:《搭建开发平台Eclipse》

4详细设计

4.1界面详细设计

游戏的界面分为控制区和操作区,控制区是整个游戏的控制按钮的集中区域,操作区是游戏者进行游戏的场所。 (1) 控制区

控制区中有以下一些按钮:

? 开始游戏按钮:进入游戏开始界面,玩游戏显示分数点数与所用时间。 ? 放弃游戏按钮:放弃本局游戏,进行游戏模式选择重新开始游戏。 ? 退出按钮:退出游戏程序。

? 重新洗牌按钮:把游戏中的图片重新排列。 ? 暂停按钮:暂停游戏。

? 游戏说明按钮:游戏规则的说明。

第5页 共14页

基于J2ME的手机连连看游戏开发

图4-1

(2) 操作区

操作区是游戏者进行游戏的场所,游戏的规则很简单,就是用不超过两次转折的连线把两个相同的图片连起来,直到把游戏画面中的图片消完为止。

游戏采用GameMap类,用来加载图片和连连看的核心算法来选择图片选中以及消除图片的算法,用GameCanvas来接收手机键盘消息来消除图片和重画地图,用UITimer与GameCanvas来控制时间来计算游戏时间与判断是否能成功完成游戏通关。

第6页 共14页

基于J2ME的手机连连看游戏开发

图4-2

第7页 共14页

基于J2ME的手机连连看游戏开发

图4-3

4.2功能详细设计

功能的详细设计主要采用程序流程图作为工具来阐述。

自动游戏 开始游戏 退出游戏 暂停游戏 图4-4

(1) 游戏结束时的判断

这个主要表现两个问题:

每一次消去图片后,均将相应位置的flag数组元素置0,且遍历flag数组是否为0。如果全部为0,则游戏结束。

当游戏结束时,直接向玩家发送gameover指令。

解决的办法:首先,每次消去图片后仅将图片数目(gamevalue变量控制)减2,当为0时,将gameover变量设为真值。而每次都向函数发送图片数目,当图片数目值为0时,即判断玩家已经胜利。 (2) 游戏进入前的选择

每个MIDlet程序都必须有一个主类,该类必须继承自MIDlet。它控制

第8页 共14页

基于J2ME的手机连连看游戏开发

着整个程序的运行,并且可以通过相应函数从程序描述文件中获取相关的信息。该类中拥有可以管理程序的创建、开始、暂停(手机中很可能有正在运行程序却突然来电的情况,这时应进入暂停状态。)、结束的函数。本程序主类为MainMIDP,并实现接口CommandLIstener。 (3) 游戏背景

首先显示的是游戏的背景介绍,在类MainMIDP定义Form类对象m_frmMain,在startApp()函数中判断是否为刚进入游戏,如果为假的话,将创建Form类的实例,并且调用append()方法在表单上放置m_MainList菜单。调用setCommandListener()命令使Form与CommandListener建立关联。调用Displayable显示。seturrent()函数显示背景介绍窗口。当玩家点击ok后将调用display.setCurrent(m_MainList)以显示游戏菜单m_MainList。当玩家按住上或下键时,在函数keyPressed(int code)中的整型变量menuIndex相应的减1或加1,相应的,在paint()函数中会根据menuIndex绘制选项是否被选中。

当移动选项条到某项,并点击ok时,在commandAction()方法中根据 menuIndex 来判断是“开始游戏”、“游戏说明”、“关于”、“退出”。

例如当选择“关于”时,将调用MainMIDP类中的commandAction ()方法以显示”关于”界面。

(4) 游戏逻辑及五个重要类的实现

GameCanvas类所实现的功能

画游戏屏幕的时间间隔:private int m_paintTime; 玩得时间计数:private int m_timeCount;

一局游戏总共花费的时间 :private int m_GameTimeCount; 定时次调用次数计数:private int m_timeMcount;

显示地图装载效果状态计数:private int m_IniGameMapCount; 画连接线标志:

private boolean m_bPaintCleanFlag; private boolean m_bPaintCleanStart; private int m_iPaintCleanCount;

游戏运行状态标志:private int m_StatusFlag;

0: 游戏图片文件装载过程,在程序启动的时候,另外一线程装载。

第9页 共14页

基于J2ME的手机连连看游戏开发

1:游戏地图文件初始化状态,出现地图初始化的效果

2:游戏进行中,检查剩下时间,调整状态条,显示分数等信息 3:单节游戏结束,处理是否继续游戏、退出游戏、保存记录; 4:一局游戏结束,显示画面庆祝

游戏地图信息: private GameMap m_gameMap;

接收键盘状态信息:调用keyPressed()函数来消除相同图片后的设置以及画面的重画。并调用GameMap类来进行游戏算法和规则的调用与判断。 (5) 地图的移动

根据游戏的设定,游戏中选图片是向下向上移动的,实现此功能的方法。 每个创建Command实例的J2ME的应用程序也必须创建实现CommandListener接口的实例。每当用户通过commandAction()方法的方式与命令进行交互的时候,就会通过CommandLIstener.所以实现CommandListener的类必须实现commandAction()方法。

在commandAction()方法中,使用getabel()方法获取命令的标签。如果getLabel()=“暂停”时,表示玩家点击了暂停键,此时,conti赋值为false,游戏画面的绘制及游戏相关的运算暂停,并且,使用removeCommand(c)语句将“暂停”移除,使用addCommand(new Command(\继续\将”继续“按纽”添加进来。当玩家点击“继续“时,conti赋值为true,并且,一定要调用start()方法,否则继续功能不可用。必须调用start()方法的原因是:J2ME的线程已stop()方法拿掉,如果想停止线程的运做,就必须依靠一个旗标(flag),在本程序中,flag就是boolean型变量conti。所以一旦此标识变量被设为false,那么while(conti)循环就会结束,线程也会跟着结束。当用户按下“继续”的时候,start()将重新产生一个线程继续执行相关的运算和画面绘制。

当玩家通关时或者任务失败时,将显示相应信息,并使用上面的方法将“暂停”键变为“返回”键盘,当点击“返回”键时,将返回主菜单选项,调用类lzhhdm里的方法menuscreensecond(),在此方法中,实例化一个MenuScreen类对象,并且使选项“新游戏”改变为”重新开始“。完成此项功能的语句子为MenuScreen.mainmenu[0] =”重新开始”。当选择”重新开始“时,使用gamescreen=new gameScreen(this)将使所有变量重新被初始化,如地图的绘制、敌人出现位置的重置、敌人的数量、玩家飞机的当前位置等。使用

第10页 共14页

基于J2ME的手机连连看游戏开发

gamescreen.start()重新开始程序的循环。

在方法paint()过程中,除了要重绘地图、图片外还要在上方绘制关卡信息、玩家分数点、及所用时间等。首先使用lm.setViewWindow()和lm.paint()设定可视范围ViewWindow和从哪里画起。其次,使用g.drawString()绘制屏幕上方的关卡信息、战绩、玩家剩余生命标志。当每次刷新绘图页面时,应使用GameCanvas的flushGraphics()将屏幕后台的缓冲区内的图像刷新到前台来(flushGraphics()应该写在paint(){ }的最后)。 (6) 核心算法—判断图片是否可擦除

两点连接原理

(0,0)10(7,8)9

原理坐标

选中两点,坐标分别为S(sx,sy)、T(tx,ty),判断连接从S点开始,我们可以从四个方向与T点进行连接,分别是上、下、左、右,在此,我们以向上为例进行算法分析。每次向上连接一点时,又有两个方向可以选择,即左和右(即分T在S的左、右边)。在此,我们选择选择向左为例对算法进一步分析。确定了方向的选择,那么连接线的形状就是:

第11页 共14页

基于J2ME的手机连连看游戏开发

T T S S

(T在S的左边的连接情况)

那么如何判断这一系列连接线是否可连呢?

源点S的坐标为(sx,sy),目标点T坐标(tx,ty) 在算法中我们定义几个临时变量:x1、x2、 y1、 y2,当然还有游戏地图的边界变量:stMap_x、stMap_y。

源点S不需要判断,默认可以作为连接线上的一点。如果sy>0,将sy-1赋给y1,如果坐标(sx、y1)没有图片文件(我们在此算法中用empty表示),则标记此点为可连接点(我们在此算法中用SetCntMaps(x, y)表示),如果有图片文件则此路线不可行,也就是选择向上连接是无法满足要求的。我们在这里演示的情况是先向上再向左,所以接下来的判断条件是tx

当然上述连接算法只是判断一条路线,而y1=sy-1。那么需要循环判断是否有其它路线,则根据y1=y1-1重复上述算法就可以了。 这只是根据我们选择从S点出发,向上寻找路线并且T在S的左边这种情况而设计的算法,其它的情况(向上再向右、向下再向左、向下再向右、向左、向右)是类似的。 此种情况的算法流程图如下:

第12页 共14页

基于J2ME的手机连连看游戏开发

开始 S(sx,sy)、T(tx,ty) 定义x1、x2、y1、y2 SetCntMaps(iSx, iSy) 否 Sy > 0 是 y1=sy-1 (sx,y1)可连接 SetCntMaps(Sx, y1) y2=y1-1 x2=sx-1 (x2,y2)可连接 (x2,y1)可连接 SetCntMaps(x2, y2) SetCntMaps(x2, y1) y2=y2-1 是 y2<=ty x2=x2-1 是 x2<=tx 否 是 y1>=0 否 y1=y1-1 否 结束 第13页 共14页

基于J2ME的手机连连看游戏开发

4.3打包测试

使用Eclipse完成代码的调试之后,需要使用WTK生成包(即jar和jad文件),其过程如下:首先,使用WTK的新建项目功能建立一个新项目,要求与Eclipse工作区下的项目名称、MIDlet类名相同。 新建项目后,将Eclipse工作区下的.java文件拷入src文件夹,将.class文件拷入class文件夹(需要新建),将pic文件夹拷入res文件夹,点击生成,如一切正常之后,选择项目-包-生成包。生成的jar和jad文件存储在LLK/bin目录下。运行Wireless Toolkit 2.5.2,使用手机模拟器进行测试。点击Lanuch按纽,进入游戏界面,即可以进行游戏测试了。

5结论

这次的大作业是对我们考验最大的一次,我们只能用几天的时间学习J2ME,然后完成这个游戏开发。

虽然难度很大,完成地也不是很好,但是我们都全力以赴,希望能尽最大的努力,完成地更好。最终,我们学到一些新的知识,至少我们对J2ME不再那么陌生,我们的团队合作能力也得到了提高。

接下来,我们将会更多地去学习相应知识,希望以后能让我们的这个游戏更加完善。

第14页 共14页

本文来源:https://www.bwwdw.com/article/52yo.html

Top