首页 毕业设计(论文)基于Java的手机游戏开发

毕业设计(论文)基于Java的手机游戏开发

举报
开通vip

毕业设计(论文)基于Java的手机游戏开发毕业设计(论文)基于Java的手机游戏开发 基于Java的手机游戏开发 基于Java的手机游戏开发 摘 要 游戏“连连看”是采用矩阵数组来存放对应的图案数据,并调用随机 产生数值函数Random()来初始化游戏。算法主要根据两个目标图案之间的 连接方式,采用遍历的方法来判断两目标图案是否可连。游戏的开发是基 于J2ME平台,目标设备是支持CLDC-1.1和MIDP-2.1的移动电话。开发的主要软件是wireless_toolkit。 关键词:J2ME、手机游戏、连连看 1 引言 随着3G的到来让人们的...

毕业设计(论文)基于Java的手机游戏开发
毕业设计( 论文 政研论文下载论文大学下载论文大学下载关于长拳的论文浙大论文封面下载 )基于Java的手机游戏开发 基于Java的手机游戏开发 基于Java的手机游戏开发 摘 要 游戏“连连看”是采用矩阵数组来存放对应的图案数据,并调用随机 产生数值函数Random()来初始化游戏。算法主要根据两个目标图案之间的 连接方式,采用遍历的 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 来判断两目标图案是否可连。游戏的开发是基 于J2ME平台,目标设备是支持CLDC-1.1和MIDP-2.1的移动电话。开发的主要软件是wireless_toolkit。 关键词:J2ME、手机游戏、连连看 1 引言 随着3G的到来让人们的目光聚焦到了一个新兴的互联网终端 ——手机上。手机的随身性让玩家有了随时随地玩游戏的可能,而且 很随意,在日常的空余时间“见缝插针”即可。可以说,手机游戏简 直可以“无孔不入”。而行业分析师也对这一行业持普遍的乐观态度。 值得注意的是,新兴市场将是手机游戏的一块越发重要的领地。 Pyramid Research的最新报告显示,手机游戏市场稳步增长, 用户数从2005年的5500万增加到了2008年的1.83亿,总收入则增长到了69亿美元。报告预计,2014年,市场规模有望达到180亿美元。 在发达国家,由于手机应用商店的驱动,手机游戏的市场前景将 继续看好;而在发展中国家,随着手机普及率的提升以及相关商业模 式的支持,市场也会逐步被激活。发展中国家对于该市场的贡献颇大, 新增用户中,印度以及中国占了相当大的比例。 推动市场发展的有如下潜在的因素: *更好更快的无线网络以及易于操作的手机终端改善了用户体验; *触摸屏、3D动画处理能力以及在线互动能力让游戏开发商把游戏 做得更好; *苹果应用商店模式的刺激作用。 Java 2 Micro Edition (J2ME)是一种针对移动电话和PDA这样 的小型设备的Java语言。大部分的手机厂商都迫切希望Java手机推广应用。上千万的Java手机已经到了消费者的手中。J2ME与台式机中的Java相比还是有很大的限制,但是它已经极大的提高了移动电 话支持游戏的能力。它有比SMS或WAP更好控制的界面,允许使用子 图形动画,并且可以通过无线网络连接到远程服务器。支持Java的手机的普及,所以它成为目前最好的移动游戏开发环境,我们在这里 将详细研究J2ME游戏的开发。J2ME不是手机上配置的唯一的解释语 言,但是它是一个许多厂商支持的行业 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 。一些专用的解释语言也 在某些区域有上佳的表现,如北美的Qualcomm的BREW ( Binary Runtime Environment for Wireless,用于无线应用程序的二进制运 行环境)和一些韩国移动运营商支持的名为GVM的标准。 1 2 需求分析 2.1游戏介绍 游戏的名称叫“连连看”。玩法是只要将相同的两张牌用三根 以内的直线连在一起就可以消除。在规定时间内,把整个版面的 所有牌都消除后,就可以晋级。下面来介绍本游戏的具体规则: 1. 消去图案:在不超过三条线段的连接下,消去选中的两个相同图 案。当玩家按下图片时,在图案上画方框标志图片;当玩家在别 外一个图案上按下时,检测图案是否相同,若相同则画出两个图 案间的连线,并消去两个图案。 2. 提示:在玩家找不出可消去的图案时,可提示出可消去的一组相 同图案并且每次提示后,可提示的次数自动减一。 3. 重新排列图案:在游戏进行到无图案可消去或玩家按下重新排列 按键时,在原来的位置上重新排列现有的图案,以达到重新排列 的目的。并且每次排列后,可排列的次数自动减一。 4. 定时器:实现一个定时器,供游戏倒计时使用,每一轮的游戏时 间为360s,在时间到达后结束本轮游戏 5. 组合变换:当图案消失时,剩下的图案有向某一方向靠拢的功能, 以填补消去而剩下的空隙。分别向上靠拢,向下靠拢,向左靠拢, 向右靠拢,蹭靠拢向对角靠拢。 6. 游戏分为三关:初级、中级、高级;每关分别有6种图案自动靠 拢模式,当6种模式都通过后,则可以过关。当通过高级关时, 则为通关。 2.2环境介绍 基于JAVA的手机游戏“连连看”,是使用JAVA ME 框架进行开发的。下面对JAVA ME的相关技术进行介绍: J2ME(Java2 Platform, Micro Edition) :Java2平台微型版 CLDC(Connected, Limited Device Configuration): 连接受限设备配置 CDC(Connected Device Configuration):连接设备配置 MIDP(Mobile Information Device Profile) :移动信息设备描述 KVM(The K Virtual Machine) :K虚拟机 J2ME把设备分为两类: 1 连接设备( connected device):主要针对于那些有电源且电 2 力充裕的较大设备。例如:电视机,冰箱等; 2 有线连接设备(Connected, Limited Device):主要针对于使 用电池,小型的设备,例如:手机,pda等。 Sun公司又把J2ME的实现分为两层: 和 。 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。 与J2SE和J2EE相比,J2ME总体的的运行环境和目标更加多 样化,但其中每一种产品的用途却更为单一,而且资源限制也更 加严格。为了在达到标准化和兼容性的同时尽量满足不同方面的 需求,J2ME的架构分为Configuration、Profile和Optional Packages(可选包)。它们的组合取舍形成了具体的运行环境。 Configuration主要是对设备纵向的分类,分类依据包括存 储和处理能力,其中定义了虚拟机特性和基本的类库。已经标准 化的Configuration有- Connected Limited Device Configuration(CLDC)和Connected Device Configuration(CDC)。 Profile建立在Configuration基础之上,一起构成了完整 的运行环境。它对设备横向分类,针对特定领域细分市场,内容 主要包括特定用途的类库和API。CLDC上已经标准化的Profile有Mobile Information Device Profile ( MIDP)和Information 3 Module Profile(IMP),而CDC上标准化的Profile有Foundation Profile(FP)、Personal Basis Profile(PBP)和Personal Profile(PP)。 可选包独立于前面两者提供附加的、模块化的和更为多样化 的功能。目前标准化的可选包包括数据库访问、多媒体、蓝牙等等。 开发Java ME程序一般不需要特别的开发工具, 开发者只需要装上Java SDK 及下载免费的 Sun Java Wireless Toolkit 就可以开始编写Java ME程式,编译及测试, 此外目前主要的 IDE(Eclipse 及 NetBeans)都支持 Java ME 的开发,个别的手机开发商如 Nokia 及 Sony Ericsson 都有自己的SDK, 供开发者在开发出兼容于他们的平台的程序。 java.util.Timer:Java 定时器(java.util.Timer)有定时触发计 划任务的功能,通过配置定时器的间隔时间,在某一间隔时间段之后 会自动有规律的调用预先所安排的 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 任务 (java.util.TimerTask)。 java.util.Random:方法Random()用来创建一个新的随机数生成器。 此构造方法将随机数生成器的种子设置为某个值,该值与此构造方法 的所有其他调用所用的值完全不同。此游戏中用在数组初始化中。 javax.microedition.midlet.MIDlet;用来创建构造主类。 javax.microedition.lcdui.*;绘制游戏的画面 4 3 概要设计 3.1算法设计 连连看的算法主要是判断两个单元格是否可连,按照连连看规 则,两个单元格的内容首先必须是相同的;其次,两个单元格之间边 疆的折点不超过两个(连接线由水平线和垂直线组成) 直线相连: 两条线段相连: 三条线段相连: 如图所示可以发现,如果有折点,每个折点必定有且至少有一个坐标 (X或者Y(和其中一个单元格是相同的,也就是说,折点必定在两 个单元格所在的X方向和Y方向的睩上。这也是连连看算法的一个出 发点。 可以将游戏中的图片按矩阵看做是一个二维数组,其中的所有图 片可以看作是数组中的一个具体的元素。那么,游戏中相同的图片可 以看做是数组中不同位置两个值相同的元素。 对于矩阵中的空白部分,将其对应于数组中一个特殊的值如“- 1”。空白区域是可以连线的,所以当边疆的等于-1的数组元素的横向索引或纵向索引相同时,可以认为这是一条直线。 5 [ 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条直线连接。如果两个单元格之间只需要1条直线能够连接起来,那么它们的横坐标或纵坐标必 定相同,有了这个条件,判断是否只需要1条直接连接就简单了许多。 其次一种可能是,两点之间需要2条直线连接。如图, A、B两 点如果需要2条直线连接起来,有可能有两种方式。但通过观察可以 发现,转折点C或者D的坐标是A点和B点坐标的组合。因此,可以从其中一点,例如A点,向B点寻路,如果这个过程中发现存在连通 6 路径,则判断可以相连。 A D C B C A B D 如下图所示,说明了两点间3条直线的所有可能性,和2条直线的情况相比,转折点是两个,看上去虽然麻烦了一点,但也不难处理。 A C B D A D C B 由图可以看出,A、B如果要通过3条直线相连,则必须有C、D两个拐点,如果能确定下C、D,问题就基本上解决了。 由于矩阵的先列数不是很多,可以彩遍历的方法扫描是否存在 CD这样的通路,如果存在,则进一步判断,A、B两点是否存在到达 CD的通路AC和BD,如果三次判断都成立,则判断可连。 消除这两个单元格时,只需要将两个单元格的值置为-1即可。 3.2游戏架构设计 3.2.1游戏的类结构 游戏共由6个类组成,分别为: 7 LLKMIDlet:显示游戏画布并启动游戏线程 MainMenu:显示游戏菜单 LLKCanvas:负责显示游戏画布 LLKMatrix:保持一个矩阵数组,并且判断两个单元格是否可连 TimerTask:计时器 GameWinCanvas:显示游戏胜利界面 程序运行后,首先显示游戏菜单,玩家可以选择“开始游戏”选 项跳转到游戏画布,如果游戏失败,则出现提示画面,玩家确认后返 回游戏菜单;如果玩家顺利通关,则显示游戏胜利画布,玩家确认后 也返回菜单。用户界面的大体流程如下图所示 8 4.详细设计 4.1主类LLKMIDlet 主类主要功能为显示游戏菜单,心脏创建和显示游戏画布。在程 序启动startApp()方法中,将显示游戏菜单。exit()方法用来退出游戏,当用户选择退出游戏时调用。startGame()方法根据菜单选择的难度级别创建并显示游戏画布。 游戏有3 个难度,分别为“初级”、“中级”、“高级”。玩家进入 难度选择菜单之后,可以使用方向键改变当前难度,当前难度用level变量标识。 操作说明: 存放在字符串ope里面,并用operate()函数调用 …… String ope="9: 打乱排列\n#: 提示\n*: 暂停\n0: 返回主菜单"; …… public void operate() //操作说明函数 { Display.getDisplay(this).setCurrent(form2); } 9 LLKMIDlet代码如下: import javax.microedition.midlet.MIDlet; import javax.microedition.lcdui.*; public class LLKMIDlet extends MIDlet implements CommandListener { private MainMenu mainmenu; private LLKCanvas canvas; String str= new String("* 连接相同的图案则可消去图案 \n* 图案之间连接线的折点不能超过两个\n* 每个等级有6关"); Form form=new Form("游戏规则"); Form form2=new Form("操作说明"); String ope="9: 打乱排列\n#: 提示\n*: 暂停\n0: 返回 主菜单"; Command OK=new Command("OK",Command.OK,1); List list=new List("请选择级别 :",Choice.EXCLUSIVE); Command back=new Command("bacd",Command.EXIT,1); protected int level = 0; public LLKMIDlet() { super(); mainmenu = new MainMenu(this); //创建菜单 form.append(str); form.addCommand(back); form2.append(ope); form2.addCommand(back); form.setCommandListener(this); form2.setCommandListener(this); list.append("初级",null); list.append("中级",null); list.append("高级",null); list.addCommand(OK); list.setCommandListener(this); } public void startApp() 10 { Display.getDisplay(this).setCurrent(mainmenu); //显 示菜单 } public void pauseApp() { } public void destroyApp(boolean flag) { } public void exit() //退出函数 { destroyApp(true); notifyDestroyed(); } public void startGame(int level) //开始游戏,创建 新画布 { canvas= new LLKCanvas(this, mainmenu,level); Display.getDisplay(this).setCurrent(canvas); } public void role() //游戏规则函数 { Display.getDisplay(this).setCurrent(form); } public void operate() //操作说明函数 { Display.getDisplay(this).setCurrent(form2); } public void drawset() { Display.getDisplay(this).setCurrent(list); } public void commandAction(Command c,Displayable s) { String cmd=c.getLabel(); if(cmd.equals("OK")) { List list=(List) s; 11 level=list.getSelectedIndex(); Display.getDisplay(this).setCurrent(mainmenu); } if(c==back) { Display.getDisplay(this).setCurrent(mainmenu); } } } 4.2矩阵LLKMatrix类 LLKMatrix实现了游戏矩阵,包括矩阵的随机生成、自动重排和判断是否消除等部分。矩阵用一个整型数组保持。 4.2.1构造函数 LLKMatrix类的构造函数根据指定的矩阵尺寸和图案数量初始化图形矩阵。由于连连看的图案必须成对出现,所以图案总数必须是偶 数。 private int VSize = 0; private int HSize = 0; private int SeedCount = 0; public LLKMatrix(int h, int v, int s) { if ((v * h) % 2 == 0) { VSize = v; HSize = h; SeedCount = s; initMatrix(HSize, VSize); } } 4.2.2初始化矩阵 initMatrix()方法先按顺序填充矩阵数组,然后随机交换任意两 12 个位置。 private int matrix[][]; public void initMatrix(int hs, int vs) //初始化矩阵 { HSize = hs; VSize = vs; matrix = new int[HSize][VSize]; int j = 0; int b = 0; for (int x = 0; x < HSize; x++) { for (int y = 0; y < VSize; y++) { j = 1-j; if (j == 1) { b = ((x * HSize + y) / 2) % SeedCount; } matrix[x][y] = b; } } do { shuffleMatrix(); } while (find() == 0); } //随机交换种子矩阵的元素,生成一个随机矩阵 public void shuffleMatrix() { Random r = new Random(); clearTrace(); for (int x = 0; x < HSize; x++) { for (int y = 0; y < VSize; y++) { int xx = Math.abs(r.nextInt()) % HSize; 13 int yy = Math.abs(r.nextInt()) % VSize; int b = matrix[x][y]; matrix[x][y] = matrix[xx][yy]; matrix[xx][yy] = b; } } } //对矩阵内容重新整理,小于-1的元素将被重 public void clearTrace() 置为-1 { for (int x = 0; x < HSize; x++) { for (int y = 0; y < VSize; y++) { if (matrix[x][y] < - 1) { matrix[x][y] = - 1; } } } } //遍历矩阵,判断是否存在两个可以相连的元素,判断过程由judge()完成 public int find() { for (int i = 0; i < HSize * VSize; i++) { for (int j = i + 1; j < HSize * VSize; j++) { if (judge(i % HSize + 1, i / HSize + 1, j % HSize + 1, j / HSize + 1, false) > 0) { return i * 1000+j; } } } return 0; 14 } 4.2.3设置和获取元素 LLKMatrix类维护了一个数组矩阵,因此也提供了设置和获取矩阵内容的外部接口,获取指定位置的数组内容代码如下,如果指定位 置超出矩阵范围则返回-1. public int getAt(int x, int y) { if (x > HSize || x < 1 || y > VSize || y < 1) { return - 1; } else { return matrix[x - 1][y - 1]; } } 设置指定位置的矩阵内容代码如下: public int setAt(int x, int y, int b) { if (x > HSize || x < 1 || y > VSize || y < 1) { return 0; } else { matrix[x - 1][y - 1] = b; return 1; } } public int getRest() // 获取当前剩余图 案的数量,如果图案被消除,则将相应的矩阵内容设置为-1 { int k = 0; for (int x = 0; x < HSize; x++) { for (int y = 0; y < VSize; y++) { 15 if (matrix[x][y] >= 0) { k++; } } } return k; } 4.2.4方块自动重排 public void rearrange(int rnd) //方块自动重 排 { switch (rnd) { case 1: raiseup(); return ; case 2: // '\002' dropdown(); break; case 3: // '\003' goleft(); break; case 4: // '\004' updown(); break; case 5: // '\005' leftright(); break; case 6: // '\006' updowncenter(); 16 break; case 7: // '\007' leftrightcenter(); break; case 8: // '\b' upleftdownright(); break; case 9: // '\t' leftdownrightup(); break; case 10: // '\n' updown(); leftright(); break; case 11: // '\013' updowncenter(); leftrightcenter(); break; case 12: return ; default: break; } } 4.3游戏画布LLKCanvas类 LLKCanvas用于显示游戏画布,并响应键盘事件。 4.3.1构造函数 LLKCanvas类的构造函数用于初始化游戏参数和游戏资源,包括 定时器、根据级别设置矩阵尺寸,心脏创建游戏尺寸 public LLKCanvas(LLKMIDlet midlet, MainMenu mainmenu, int 17 lvl) { super(false); timertask = new TimerTask(this); timer = new Timer(); setFullScreenMode(true); CanvasHeight = getHeight(); this.midlet = midlet; this.mainmenu = mainmenu; level = lvl; VCount = VCounts[level]; SeedCount = SeedCounts[level]; init(); matrix = new LLKMatrix(HCount, VCount, SeedCount); TimeLeft = TimeTotal; timer.schedule(timertask, 0L, 1000L); } ()方法用来读取游戏资源,包括游戏中使用到的图片文件 4.3.2游戏计时 TimeDown()方法用于配合计时器进行游戏计时,计时器每过一 秒调用该方法一次,而TimeLeft减一,初始值为360。当TimeLeft为0时,游戏结束,玩家没有在指定时间内完成任务,游戏失败。 使用TimeDown()方法计时,如果玩家没有在指定时间内完成任 务,则调用GameEnd()方法,该方法取消计时任务,并且将游戏结束 标志设置为true。 4.3.3屏幕绘制 游戏画布显示的内容由paint()方法控制,如果游戏失败则显示 游戏结束画面,如果游戏停止则显示游戏暂停画布,如果游戏进行中 则显示游戏画布。 游戏的暂停和继续可以通过设置标识位来实现。goPasuse()和goActive()方法可以改变暂停标识,然后调用repaint()方法重绘屏幕,如果暂停则显示暂停画面,如果没有暂停则绘制游戏画面。 当游戏失败时会调用drawEnd()方法,显示提示画面 public void paint(Graphics g) { 18 if (isEnded) { drawEnd(); } else if (!isPaused) { drawGame(); } else { drawPause(); } flushGraphics(); } public void goPause() { isPaused = true; repaint(); } public void goActive(boolean resume) { isPaused = !resume; repaint(); } private void drawPause() { Graphics g = getGraphics(); g.setColor(0); g.fillRect(0, 0, CanvasWidth, CanvasHeight); g.setColor(255, 255, 255); g.drawImage(PauseImage, (CanvasWidth - PauseImage.getWidth()) / 2, (CanvasHeight - PauseImage.getHeight()) / 2-14, 0); drawStatusBoard(g); } private void drawGame() 19 { Graphics g = this.getGraphics(); g.fillRect(0, 0, CanvasWidth, CanvasHeight); drawMaze(g); drawStatusBoard(g); } private void drawEnd() { Graphics g = getGraphics(); g.setColor(0); g.fillRect(0, 0, CanvasWidth, CanvasHeight); g.setColor(255, 255, 255); try { Image img = Image. createImage("/gameover.png"); g.drawImage(img, (CanvasWidth - img.getWidth()) / 2, (CanvasHeight - img.getHeight()) / 2, 0); img = null; } catch (Exception e) { e.printStackTrace(); } drawStatusBoard(g); } 5用户使用 手册 华为质量管理手册 下载焊接手册下载团建手册下载团建手册下载ld手册下载 1.可消去的两个目标图案是相同的 2.两个目标图案之间的连接线不能超过三条 1.方向键: 移动方框,定位选择的图案 2.数字键 9:打乱现有图案的排列顺序 3.#字键:提示 20 4.* 字键:暂停游戏 5.数字键 0:返回主菜单 当在手机中选择进入“连连看”游戏时,就会出现如图5-1所示的菜单主界面。在菜单中可以选择“开始游戏”则会跳到图5-2所示的界面;选择“难度设置”则会跳到图5-6所示界面;选择“操 作说明”则会跳到5-5所示界面;选择“游戏规则”则会跳到图5-4界面。若玩家超出时间未消除所有的图案或无图案可再消去时, 则会弹出图5-3的游戏结果界面。相应的具体情况请参照下面说明: 游戏主界面:主要是在刚开始载入程序时, 弹出来的第一界面,用来显示游戏的各选项功 能。如:“开始游戏”、“难度设置”、“操作说 明”、“游戏规则”、“退出游戏”。是与用户进 行操作的主页面。 图5-1 游戏菜单主界面 游戏界面:是游戏进行当中的截图。是用 户开始游戏后,游戏的画面。从图可看到我们 的图案由8×11的矩阵组成,这是高级难度的 游戏界面。而图案底下依顺序从左到右有:“计 分器”、“计时器”、“重新排列图案提示”、“可 消去图案提示”。 图5-2 进入游戏的初始界面 21 游戏结束提示界面:是在玩家用完所有“重 新排列图案”的机会或到时一局的额定时间时, 弹出的提示界面,表示游戏已经结束。 图5-3游戏结束提示界面 游戏规则图片:弹出连连看游戏的操作规 则。主要是说明可以消失的图案之间的联系, 一是两个目标图案必须相同,二是两相同目标 之间连接线的折点不超过两个。左下角有一个 返回主菜单的按钮。 图5-4游戏规则提示界面 操作界面:显示游戏的操作按键功能; 连连看的按键主要有: 方向键:控制选择方框的移动 数字键9:重新排列游戏图案 键位#:提示可消去的图案对 键位*:暂停游戏 数字键0:返回主菜单 图5-5游戏操作说明提示界面 22 难度设置界面:连连看有三个难度等级, 分别是初级、中级、高级。玩家可按上下方向 键选择,选好后按右下角的OK键返回主菜单。 图5-6游戏难度设置界面 测试机型:NOKIA5320 XM 主屏参数 1600万色TFT彩色屏幕;240×320像素,2.0英寸; 操作系统 Symbian Symbian OS,S60 Java扩展 JavaMIDP 2.1 测试结果:能正常进行游戏,各游戏功能正常,图片和图标能 正常地显示,并能正常退出游戏 6结论及尚存在的问题 6.1游戏功能 ?游戏分为三个等级:初级、中级、高级; ?每级别有6关,每关的图案靠拢方式不同:有向上,向下,向左, 向右,两边,中间靠拢。 ?游戏有6次提示、和4次重新组合排列图案的机会。 ?每局时间为360秒。 ?积分计算是根据被消去两图案之间连线多少来划分的,两图案之如 果只有一条连线则算10分,二条连线则为20分,三条连线则50分。 6.2开发方法 PC系统:Microsoft Windows XP Professional SP2 开发包及模拟器: JDK6.0 、 wireless_toolkit-2_5_2(自带模拟 23 器) 图片处理: PHOTOSHOP 集成环境及需要插件:Eclipse3.2中文版、EclipseME 1.7.7 6.3真机测试 本游戏在多款NOKIA手机上测试。 NOKIA5320 XM 主屏参数 1600万色TFT彩色屏幕;240×320像素,2.0英寸; 操作系统 Symbian Symbian OS,S60 Java扩展 JavaMIDP 2.1 NOKIA N81 主屏参数 1600万色TFT彩色屏幕;240×320像素,2.4英寸; Symbian Symbian 9.2 Series 60 3rd Edition操作系操作系统 统 Java扩展 支持JAVA扩展 NOKIA N73 主屏参数 26万色TFT彩色屏幕;240×320像素,2.4英寸 操作系统 Symbian symbian9.1操作系统和S60第三版软件界面 Java扩展 Java扩展 NOKIA N78 主屏参数 1600万色TFT彩色屏幕;240×320像素,2.4英寸; 操作系统 Symbian Symbian 9.3,S60第三版FP2平台 Java扩展 JavaMIDP 2.0 24 NOKIA5320 XM :可以安装,并且可以顺利进行游戏,退出游戏 NOKIA N81 :版本不支持,不能安装 NOKIA N73 :版本不支持,不能安装 NOKIA N78 :版本不支持,不能安装 6.4存在的问题 ?操作不够人性化 ?不能实现存储积分和用户名 ?图案相似度过高,较难辩认 ?尚未实现联网功能 ?因为资源限制不能在较多的平台进行测试 ?目前支持的机型较少 7参考文献 [1]威尔斯,J2ME 游戏编程[M],北京:清华大学出版社,2005. [2]郝玉龙,李向前.J2ME移动应用开发[M],北京:清华大学出版社, 2006. [3]莫尼逊.J2ME手机游戏编程入门[M],北京:人民邮电出版社,2005. [4]李振鹏,龚剑.J2ME手机游戏开发技术详解[M],北京:清华大学出版社,2006. 25
本文档为【毕业设计(论文)基于Java的手机游戏开发】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_435706
暂无简介~
格式:doc
大小:184KB
软件:Word
页数:35
分类:互联网
上传时间:2017-09-25
浏览量:62