欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    基于J2ME手机拼图游戏的关键技术研究与实现毕业论文附测试代码.doc

    • 资源ID:2388745       资源大小:1.60MB        全文页数:33页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于J2ME手机拼图游戏的关键技术研究与实现毕业论文附测试代码.doc

    本 科 毕 业 设 计 设 计 题 目 基于J2ME手机拼图游戏的关键技术研究与实现 姓名(学号) 系 别 专 业 通信工程 导 师 姓 名 基于J2ME的手机拼图游戏的关键技术研究与实现作 者指导教师摘要: 在21世纪的信息时代,随着通信技术的高速发展,移动网络终端性能的不断提高与完善以及手机的高普及率,人们对手机终端应用开发的需求在不断增大,其对手机的需求已不仅仅是把作为一款简单的通讯工具,而是渐渐习惯于手机作为新的娱乐工具,因而手机越来越多的应用到人们的生活中,特别是手机游戏的推出受到了人们热烈的追捧,而我所设计的这款手机拼图游戏对于人们的智力开发有一定的帮助。在拼图游戏中用到的关键技术主要有手机游戏的图像和按键处理、多线程的使用等关键技术及解决方案。在手机游戏图像处理这一块用了Canvas类的子类GameCanvas进行游戏画布,通过算法计算图形界面的尺寸。在按键事件处理方面也是通过Canvas类中的三个方法进行设置,包括按键按下的时候,按键长按的时候以及按键释放的时候。为了使玩家一边玩游戏的同时可以听到动感的声音,所以在这个拼图游戏中使用了多线程,由于多个线程之间可能会共享内存,而多线程的机制实际上相当于CPU交替分配给不同的代码段来运行,因此安全问题就成了重要问题。在这一方面也做了安全处理,在代码中增加了关键字synchronized ,使线程同步,如果其他线程要想调用这个资源就需要等待,保证了机制的安全运行。在异常方面,抛出的各种各样异常也做了相应的处理。经过以上技术处理基本解决了手机拼图游戏的运行及安全工作。关键词:J2ME插件;拼图;手机游戏。Jigsaw puzzle based on the J2ME mobile phone key technology research Abstract:With the rapid development of communications technology in the 21st century information age, the high penetration of mobile network terminal continuously improve the performance and improvement, as well as mobile phones, the demand for application development of mobile terminals in increasing demand for mobile phonesnot just as a simple communication tool, but gradually accustomed to the phone as a new entertainment tool, and thus the phone more and more to people's lives, especially the introduction of mobile games has been the enthusiastic pursuitI designed this phone jigsaw puzzle with the help of people's intellectual development.The key techniques used in the jigsaw puzzle mobile games, images and buttons, multi-threaded use of key technologies and solutions. This one with a subclass of the Canvas class GameCanvas game canvas, by the algorithm to calculate the size of the graphical interface in the mobile game image processing. Three methods in the Canvas class in the button event handler is set when the button is pressed, the button a long time, as well as the button is released. In order to make the players while playing the game while you can hear the voice of the dynamic multi-threaded, so in this jigsaw puzzle, may share memory between multiple threads, multi-threading mechanism is actually equivalent to the CPU alternately assigned to different section of code to run, security has become an important issue. Safe handling, in this keyword the synchronized code, so that the thread synchronization, if the other threads in order to call this resource need to wait, to ensure the safe operation of the mechanism. In the unusual aspects of a variety of abnormalities were also thrown the appropriate treatment. After basically solve the above technical processing of the operation and safety of the phone puzzle.Key words:J2ME plug-ins; puzzle; mobile games. 目录1 引言.11 .1开发研究背景及意义.1 1.1.1 开发的目的和意义.1 1.1.2 该课题领域的开发及应用现状分析.2 2 需求分析.2 2.1 系统描述.2 2.1.1本游戏的设计规则.2 2.1.2游戏实现通过位置的计算.3 2.2 运行环境.4 2.2.1 J2ME体系结构介绍.4 2.2.2 JDK的安装及作用.5 2.2.3 Wireless Toolkit 2.4.2的安装及配置.6 2.2.4 Eclipse,Eclipse Me整合WTK.73 系统原理.8 3.1 系统原理分析.8 3.2 系统原理功能分析.9 3.3 系统原理用例图.10 3.4 系统原理图. .11 4 详细设计.12 4.1 系统模块操作.12 4.1.1 图片分割模块. .13 4.1.2图片分割后重组模块.14 4.1.3键盘控制图片移动模块.16 4.1.4 辅助模块.18 4.1.5结果分析模块.20 4.2用户操作模块.22 5 系统测试.26 总 结.33致 谢.33 附件:参考文献1 引言1.1 开发研究背景及意义 1.1.1 开发的目的和意义实现J2ME手机拼图游戏的关键技术;随着智能手机的逐步普及,手机游戏也日益流行起来。利用J2ME手机应用平台,利用J2ME的移动开发MIDP架构,设计和开发了一款拼图游戏。在游戏中融入了图片拆分和分散技术,并在游戏当中使用了多线程,以提高游戏的趣味性,由于java语言能够实现具备复杂的逻辑和功能的手机游戏,大量已有的java游戏程序将被应用到手机上或者手机应用互动,因此,在当前J2ME手机游戏有着巨大的市场机遇和商业价值的背景下,在J2ME手机游戏技术比较成熟的背景下,加强J2ME手机游戏的开发是必须的。 1.1.2 该课题领域的开发及应用现状分析 在21世纪的信息时代,随着通信技术的高速发展,移动网络终端性能的不断提高与完善以及手机的高普及率,人们对手机终端应用开发的需求在不断增大,其对手机的需求已不仅仅是把作为一款简单的通讯工具,而是渐渐习惯于手机作为新的娱乐工具,因而智能手机越来越多的应用到人们的生活中,特别是手机游戏的推出受到了人们热烈的追捧,而我所设计的这款手机拼图游戏对于人们的智力开发有一定的帮助。所以这个课题的研究在如今社会具有一定应用价值。2 需求分析2.1系统描述 2.1.1 本游戏的游戏设计规则 首先进入手机主菜单界面,然后进入游戏菜单界面选择游戏难度,进入拼图游戏后,出现4个方格、16个方格或是64个方格的游戏界面上有一个空格,通过按手机的4个方向键可以将空格对应的上、下、左、右方向的小图块移动到空格中,当所有的小图块被移到了正确的位置后系统会自动显示整个原始图片,这就说明拼图已经完成。在拼图过程中按下手机的选择键可以显示原图,用来进行参照,再按一下后又会回到原来的拼图状态。拼图完成后,进入下一关。本游戏分为3种难度等级,一种为容易等级,是2*2的4个格子的拼图;一种为一般等级,是4x4的16个格子的拼图,一种为困难等级,是8*8的64个格子的拼图。 2.1.2 游戏实现通过位置的计算从大的图片里提取出所需要显示的那部分显示出来,看起来就像是一个小的图块。 利用J2ME 的Graphics对象方法set clip(int X,int Y,int width,int height)方法来实现,先把绘制小图块的区域设置set clip,再绘制大图片,这样只有set clip的区域能被显示出来,看起来的效果就像是一个小图块。小图块的滑动就是变化set clip区域,再调整绘制大图片的起始坐标来实现的。2.2 运行环境2.2.1 Java ME体系结构介绍 Java ME可以支持的开发分为两个系列: CDC:互联设备配置(Connected Device Configuration),面向强大的可以间歇式的与网络连接的设备(有稳定的电源供应,设备性能强劲),如:机顶盒、Internet电视、家用电器和汽车导航系统等; CLDC:互联受限设备配置(Connected Limited Device Configuration),主要面对大量的微型设备和嵌入式设备。移动开发(特别是手机移动开发),一般情况下,属于CLDC。Java ME的基本体系结构: 可选包 描述( MIDP ) 配置(CLDC) Java运行环境(KVM) 操作系统 2.2.2 JDK的安装及作用 在PC机上利用模拟器进行移动应用开发时,为方便起见,我们将会利用到Java移动开发工具包(WTK)、Eclipse以及相应插件(Eclipse Me)。这些软件的运行,都需要有Java SE的支持。所以,需要进行Java SE开发环境(JDK)的安装,方便以后开发的进行。 JDK安装完毕之后,在C:Program FilesJavajdk1.6.0_01下可以找到安装的目录,如图所示: JDK安装目录中,比较重要的文件夹或文件的内容详见下表所示。2.2.3 Wireless Toolkit 2.4.2的安装及配置 Java SE的安装只是提供了一个开发环境的支持,为了在PC机上进行移动应用开发,还必须安装无线开发工具包(Wireless Toolkit, WTK)。所以,本节需要进行WTK的安装,为移动应用开发提供基础支持。安装完毕之后,在C:WTK2.5.2下可以找到安装的目录,如图所示: WTK安装目录中,几个重要的文件夹内容详见表所示:2.2.4 Eclipse,Eclipse Me整合WTK JDK和WTK的安装,提供了一个支持的开发环境,此时可以通过文本编辑器编写移动应用。但是,真实的项目开发中,为了提高开发效率,需要采用一些简便快捷的IDE进行支持,目前最流行的IDE是Eclipse,同时它也是免费的;所以本游戏采用Eclipse进行代码编译。Eclipse下的Java开发,需要利用JDK来进行支持,首先需要将Eclipse和JDK进行绑定。打开Eclipse,选择“Window”“Preferences”,得到如图的界面。选择“Java”“Installed JREs”,可以看到Eclipse已经和JDK1.6绑定,也可以点击右边的“Edit”按钮改变JDK绑定。 Eclipse的安装,只能让我们很方便地编写Java程序,但是要方便地编写Java ME程序,并对Java ME移动应用提供运行模拟,还必须对Eclipse的功能进行加强。首先,打开Eclipse,选择“Window”“Preference”,如果Eclipse Me正常安装,将有一个“J2ME”的选项,选择“J2MEDevice Management”。WTK的选择,点击“Import”。点击“Browse”,选择WTK的安装目录(C:WTK2.5.2),点击“Refresh”,就可将WTK中的模拟设备导入。点击“Finish”。选择这个模拟器,点击“OK”,完成。3 系统原理 3.1 系统原理分析本系统主界面由智能拼图游戏菜单构成,在主界面主菜单中有三个子菜单,分别是新游戏,游戏排行,游戏说明。(1) 系统主菜单模块:游戏拼图模块是指玩家想要玩该游戏的时候,首先进入的是这个界面,然后进行游戏选择,包括:游戏的等级,查看排行,以及游戏的说明。(2) 系统子菜单模块: 新游戏模块是指玩家进入该模块后进行游戏的难度选择,该模块的难度等级分为简单、一般、困难。前面二个等级比较简单,不需要花费太多的时间就可以完成,但是困难等级相对麻烦一些,不仅要花费大量的的时间,还需要你有高智商的头脑去思考,观察每一个细节。 游戏排行模块是指玩家在闯关后留下的记录,该模块共记录三个级别难度,分别是简单、一般、困难。当玩家选择简单时,闯关过后就会在简单后面记录下该玩家一共闯过多少关,如果一关没有闯过就不会有任何记录。 游戏说明模块是指玩家在玩游戏之前可能会看的一个环节,该模块主要介绍这款游戏的功能以及用途,还有等级的细节说明。3.2 系统原理功能分析 本系统原理的功能是通过人机交互进行游戏操作,利用键盘方向键的控制进行走动。运用线程进行游戏的安全运行。游戏的线程主要由三个部分组成:检测键盘输入(与玩家交互),更新游戏场景(处理游戏逻辑),绘制游戏画布。三个模块相互联系又互相联系,按照模块的思想来实现游戏线程将更加面向对象和便于理解。如果程序运行快于预期速度会使玩家感觉到抖动,从而影响游戏效果,因此还需要检测每帧的运行时间,如果过快则等待一段时间,如果过慢则挂起当前线程允许其他线程执行。3.3 系统原理图 关闭主菜单 返回 游戏主菜单 返回返回 返回确定确定确定 游戏说明游戏排行新游戏 返回确定返回确定返回确定确定确定返回返回确定返回返回确定主要介绍游戏的功能和等级说明。一般困难:第?关简单:第?关一般:第?关困难简单开始游戏开始游戏开始游戏8*8拼图4*4拼图2*2拼图退出退出退出游戏主菜单返回关闭主菜单1.1如图所示为系统原理图 4 详细设计 4.1 系统模块操作 4.1.1 图片分割模块 给图片每一小块分一个编号用二维数组结合在一起,可以定义为整形或者字符串,如4*4:Intmap = 00,01,02,03, 10,11,12,13, 20,21,22,23, 30,31,32,33; 程序代码: int edge = 图片宽度/4; public void paint(Graphics g)for (int x = 0; x < 4; x+) for (int y = 0; y < 4; y+) if (mapxy != 33) / 获取编号的第一位数int xSegment = mapxy / 10;/ 获取编号的第二位数int ySegment = mapxy % 10;/ 获取图片中左上角坐标为(xSegment*edge, ySegment*edge)/ 宽度为edge,高度为edge的小块/ 画到界面上左上角坐标为(x*edge, y*edge)的位置g.drawRegion(img, xSegment * edge, ySegment * edge, edge,edge, Sprite.TRANS_NONE, x * edge, y * edge,Graphics.LEFT | Graphics.TOP);4.1.2图片分割后打乱重组模块 通过在数组map中任取二个元素交换位置,交换足够多的次数,数组map中的元素就足够乱了,然后根据元素在图片中取土小块,画到界面上。代码如下:void initMap() Random rnd = new Random();int temp, x1, y1, x2, y2;/ 将地图数组打乱for (int i = 0; i < 100; i+) x1 = rnd.nextInt(4);x2 = rnd.nextInt(4);y1 = rnd.nextInt(4);y2 = rnd.nextInt(4);temp = mapx1y1;mapx1y1 = mapx2y2;mapx2y2 = temp;this.repaint(); 4.1.3键盘控制图片移动模块 通过设置键盘的方向键,利用方向键进行图片的移动进行拼图程序代码:protected void keyPressed(int keyCode) int action = this.getGameAction(keyCode);int xOf33 = -1, yOf33 = -1;for (int x = 0; x < 4; x+) for (int y = 0; y < 4; y+) if (mapxy = 33) xOf33 = x;yOf33 = y;break;switch (action) case GameCanvas.UP:if (yOf33 != 3) this.swap(xOf33, yOf33, xOf33, yOf33 + 1);break;case GameCanvas.DOWN:if (yOf33 != 0) this.swap(xOf33, yOf33, xOf33, yOf33 - 1);break;case GameCanvas.LEFT:if (xOf33 != 3) this.swap(xOf33, yOf33, xOf33 + 1, yOf33);break;case GameCanvas.RIGHT:if (xOf33 != 0) this.swap(xOf33, yOf33, xOf33 - 1, yOf33);break;this.repaint(); public void swap(int xOf33, int yOf33, int targetX, int targetY) int temp = maptargetXtargetY;maptargetXtargetY = 33;mapxOf33yOf33 = temp;4.1.4 主界面菜单模块 主界面菜单代码显示如下:public class MenuList extends List public static Command comdConfirm = new Command("确定",Command.SCREEN,2);public static Command comdBack = new Command("返回",Command.BACK,1);public static int SELECT_NEWGAME = 0; public static int SELECT_PACEIN =1; public static int SELECT_DESC = 2; private static String title = "智能拼图游戏"public MenuList()super(MenuList.title,Choice.IMPLICIT); this.addCommand(comdConfirm); this.addCommand(comdBack);trythis.append("新游戏",Image.createImage("/img/Icon.jpg");this.append("游戏排行",Image.createImage("/img/Icon.jpg");this.append("游戏说明",Image.createImage("/img/Icon.jpg");catch(IllegalArgumentException e) System.out.println(e);catch(IOException e) System.out.println(e);4.1.5子菜单模块 (1)在新游戏模块中,玩家通过新建游戏开始游戏,主要程序代码如下:public class SelectLevelMenu extends List public static Command comdBack = new Command("返回",Command.BACK,1); public static Command comdComit = new Command("开始游戏",Command.OK,1); public static int LEVEL_EASY = 0; public static int LEVEL_NORMAL = 1; public static int LEVEL_DIFFICULTY = 2; public static String LEVEL_EASY_NAME = "简单" public static String LEVEL_NORMAL_NAME = "一般" public static String LEVEL_DIFFICULTY_NAME = "困难" private static String TITLE="请选择等级." public SelectLevelMenu() super(SelectLevelMenu.TITLE,Choice.IMPLICIT); addCommand(comdBack); addCommand(comdComit); try Image image = Image.createImage("/img/Icon.jpg"); this.append("简单",image); this.append("一般",image); this.append("困难",image); catch(IOException e) System.out.println(e); (2) 在游戏排行模块中,主要是记录玩家闯关的层数,如果该玩家没有闯过一关将不会有任何记录。该模块代码如下:public class PlaceInCompetition extends Alert public static Command comdBack = new Command("返回",Command.BACK,1); public static String TITLE = "最高记录." private String levelName = "" private String levelNum = "" public PlaceInCompetition() super(PlaceInCompetition.TITLE); this.addCommand(comdBack); this.setTimeout(Alert.FOREVER); String txt = "" try Image image = Image.createImage("/img/paiming.jpg"); this.setImage(image); RecordStore rec = null; RecordEnumeration en = null; try rec = RecordStore.openRecordStore(Test.RecordStore_Easy,false); en = rec.enumerateRecords(null,null,false); int m=0; while(en.hasPreviousElement() if(m = 0) levelName = new String(en.previousRecord(); if(m = 1) levelNum = new String(en.previousRecord(); break; m+; rec.closeRecordStore(); txt += levelName+": 第 "+levelNum+" 关n" catch(Exception e) txt += SelectLevelMenu.LEVEL_EASY_NAME +": "+"第 0 关n" try rec = RecordStore.openRecordStore(Test.RecordStore_Normal,false); en = rec.enumerateRecords(null,null,false); int m=0; while(en.hasPreviousElement() if(m = 0) levelName = new String(en.previousRecord(); if(m = 1) levelNum = new String(en.previousRecord(); break; m+; rec.cl

    注意事项

    本文(基于J2ME手机拼图游戏的关键技术研究与实现毕业论文附测试代码.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开