收藏 分销(赏)

Android的拼图游戏应用开发.docx

上传人:s4****5z 文档编号:8924101 上传时间:2025-03-08 格式:DOCX 页数:27 大小:6.39MB
下载 相关 举报
Android的拼图游戏应用开发.docx_第1页
第1页 / 共27页
Android的拼图游戏应用开发.docx_第2页
第2页 / 共27页
点击查看更多>>
资源描述
基于Android拼图游戏应用开发 第一章 绪 论 1.1概述 Android一词的本义指“机器人”,曾经是一家创立于旧金山的公司的名字,该公司于2005年8月份被Google收购,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件,并从此踏上了飞速发展的道路。经过这几年的发展,它已经发展成了一个平台、一个生态体系。现在Android在移动领域已经得到了广泛的应用。根据Google于2011年6月份公布的数字,现在每天激活的Android设备高达50万台,比5月份的数据增加了10万台!Google还透露目前已经与36家OEM厂商和215家运营商合作,共激活了超过1亿台Android设备。 由于Android的良好的发展前景与应用开发的刚起步,基于Android的应用开发,特别是游戏开发是一片新的热土。本项目正是在Android平台上进行游戏的开发,从Android作为受限设备的特点出发,拼图游戏对系统性能要求相对较低,也更适合与Android手机的触屏操作方式。拼图游戏也适于当前手持设备游戏的休闲娱乐的特点,更利于用户适应和喜爱。 1.2行业发展现状 当前Android游戏开发行业并不成熟,当前适合Android平台上的游戏引擎很少,没有一个主流的底层平台。Andriod手机游戏的开发呈现出百花齐放的态势,当前Android上的很多游戏都是从J2ME上移植过来的。但是由于Android游戏开发的广阔前景,行业发展也十分迅速,出现了很多优秀的作品。 1.3实验的主要内容和前景 本实验是计算机语言的实验课程,旨在锻炼增强学员的计算机编程能力,提高学员的动手实践能力。为充分锻炼本组学员的程序设计能力,本小组选择难度较大的android游戏设计。 “愉快的定向越野”游戏灵感来源于魔方,魔方通过旋转面来拼凑成一整个完整的立方体,但是考虑到魔方是三维的,android的3D游戏引擎不适合初学者,因此我们对魔方游戏进行抽象和简化,得到了我们的小游戏——“愉快的定向越野”。 本试验采用经典的拼图游戏模式,自主设计拼图规则,引入深度优先算法作为游戏的核心算法,开发出一款简易、趣味性强的安卓游戏。 第二章 总体设计 2.1设计目的 本设计的目标是在Android平台上设计出一款简单实用、用户体验良好、充满休闲性和娱乐性的拼图游戏。 给自己一个平台,拓展自己的视野和实力,熟悉开发平台和语言的使用。在软件开发过程中学有所得。 2.2设计方案 本项目拟采用java语言和eclipse开发环境进行开发,采取小组成员分工分模块合作形式。首先,学习掌握JAVA编程语言并熟悉eclipse开发环境,为后续开发工作做好准备;其次,深入研究经典拼图游戏的设计思路,理解游戏核心算法,掌握拼图游戏的基本组成要素;在对拼图游戏的核心设计初步熟悉后,小组分工分模块进行游戏开发,然后进行集中整合和调试,最后进行试验报告的撰写。 2.3设计的创新点 本项目主要创新点在于: 引入了深度优先算法,作为游戏中拼图路径的核心搜索算法。深度优先算法是图论中的经典算法,在游戏中进行路径选择时由于使用了深度优先算法,使得搜索匹配路径的效率极大地提高,相比经典拼图游戏来说游戏难度层次更趋丰富,方案选择上更具灵活性,从而极大增强了游戏的趣味性。 第三章 详细设计 3.1 开发环境 IDE:Eclipse ADT, android4.0真机测试 OS: Ubuntu12.04 3.2游戏流程设计 图1 游戏开发流程设计 如上图所示,用户点击游戏图标,开始运行程序,进入start状态。首先出现游戏的欢迎界面,即title状态。此时,通过程序通过监听用户的touch操作,进入游戏的MainView界面,此时直接进行游戏就绪状态,在等待用户操作的过程中,程序不断地对用户的操作进行监听和判断。如果未到达目标点即结束状态时,系统继续等待用户动作;当用户顺利完成一局游戏时,系统弹出dialog状态框,供用户选择是否继续游戏。同时,在游戏的正常运行过程中,用户也可以通过进入reset状态,通过重新设置游戏参数开始新一局游戏。 3.3实验内容 1. MainActivity类 MainActivity继承于Activity父类,主要用于游戏标题栏、音量控制、游戏设置目录、游戏数据保存和退出等活动。 思维导图: 主要实现函数: void onCreate(): onCreate函数是一个消息响应函数,在窗口显示前设置窗口的属性如风格、位置等,同时可以通过onCreate函数在窗口中添加按钮、状态栏、工具栏等属性设置功能。 Boolean onCreateOptionsMenu(): onCreateOptionsMenu函数主要是添加游戏设置选项,在本项目中可供用户使用的选项是重置选项,可以使重新设定游戏参数,改变游戏难度,使用户可以重新开始游戏。 Void onResume(): onResume函数用于读取游戏数据,游戏数据保存在read文件中。 Void onPause() onPause函数用于在用户暂停游戏时保存游戏数据,待用户返回游戏时有onResume函数读取游戏数据。 Boolean onOptionsItemSelected(): onOptionsItemSelected函数用于实现设置选项的选择活动。 2. MainView类 MainView类继承于SurfaceView父类,主要设置游戏主界面的游戏背景、起点和终点标识、对话框、标题等界面显示信息。 思维导图: 主要实现函数: Void update(): Update函数主要用于实时动态更新游戏进行过程的动画信息。当检测到游戏正在进行时,对迷宫方格的位置颜色信息进行动态更新,当人物移动或进入洞穴中时,对人物位置信息进行实时更新。 Void draw(): Draw函数用于对标题框、对话框、起始标识的图像属性的描绘处理。该函数主要通过画布canvas类的成员函数对标题框、对话框和位图等进行描绘处理。 onTouchEvent(): onTouchEvent函数主要用于监听用户触摸活动,在游戏进行状态时,用户触摸动作用于迷宫方格的移动。 3. Person类 Person类是自定义类,主要描述游戏中小人的动作,该类主要实例化了Paint类、Bitmap类、Context类、Rect类等的对象,通过这些对象描述小人的动作、状态、图像信息 思维导图: 主要实现函数: Void setPoint(): setPoint函数主要用于设定迷宫方格的宽度和高度、设定人物的位置信息。 Void setPosition(): setPosition函数主要用于设定人物图片的实际坐标。 Void update(): Update函数主要用于实时更新人物的位置信息,以准确地反映人物移动时在画布主界面的位置。 4. Cell类 Cell类主要描述迷宫方格的运动、状态变化等性质,定义迷宫小方格的运动方向和游戏难易度的设置,同时将cell状态变化与位图的选择相对应。 主要实现函数: Void setHole(): setHole该函数将洞穴所在的方格进行定义,设定该方格在四个方向上均具有运动可能性,即洞穴所在方格的邻接全为真。 Void setRandom(): setRandom函数随机产生单元格类型和朝向,并根据输入的计数值设置游戏难度。 Int toInt(): toInt函数将方格的布尔值转化为int类型,对应于8张位图。 Void set(): Set函数用于决定方格的运动方向。 5. Puzzle类 puzzle类是此游戏的主题程序,主要是支持中间的方格操作。只要实现的功能是按照注定方向水平向左向右,垂直向上向下移动四个方格;判断现在的方格状态是否与目标或地雷形成通路;得到现在的状态能够通达的方格;随机的生成有正确结果的新的游戏界面;计算当前的难易度等功能。 思维导图: 主要实现函数: move(): 其中参数r实现了重用,即可以表示行号,也可以表示列号,代码的实现思路是判断方向d,如果d是左或者右方向则用一个循环使第r行向左或者向右移动一格,如果d是上或者下则用一个循环使第r列向上或者向下移动一格。 checkRoute(): 代码中由于我们选用的方格只与两个方向相连,我们的初始位置能够移动到的位置肯定时唯一的一条路径,尽管其可能不能到达目的地或者地雷。此函数通过判断与此单元格相连并且可以达到的单元格添加到route里面,返回的值是route数组,其中不能到达的单元格是0,其余按照距离开始位置的远近递增。 makeRandomCells(): 函数中的随机算法表示随机扰动次数,是在已经生成一条路径的基础上,通过调用move函数来打乱单元格的数据,从而生成随机的单元格,并且保证存在一种成功解。 makeState(): 通过深度优先搜索的方式生成一条可通行的路径,供生成游戏界面使用。 setDifficulty(): 函数中通过统计puzzle类中各种类型的方格的个数,通过公式 计算此次游戏的难度。 6. PlayPuzzle类 此类主要是实现puzzle类的实际的操作过程,也是游戏者在玩游戏是的说主要调用的类,此类实现了初始化,方格区域的显示,以及当现在能够到达目的地或者地雷时调用的函数,以及操作当接收到touch操作时的处理过程。 思维导图: 主要实现函数: routePosition(),routePositionHole(): routePosition()函数返回值为当前游戏状态下如果存在到达目标点的路径时的路径点的集合,实现方式是check一下当前的状态,得到route矩阵,然后遍历矩阵将路径上的点放入list中,返回路径。 routePositionHole()函数与routePosition()函数意义与实现方法类似。 draw(): 调用canvas相关的画图接口进行画图 touch(): 此函数通过检测屏幕上的触控信息生成相应的参数值,方向,及行(列)号。 update(): 当完成本次游戏时,显示成功到达界面或者踩到地雷的相关界面。 7. GameCount类 此类主要计算存储当前玩家一共连续玩的局数,提供count数据的加,取,保存到文件,从文件中读取,在界面中显示当前的游戏次数等功能。 思维导图: 主要实现函数: up(): 函数主要实现当玩家成功一局时,此类中的count参数加1,并且更新当前最好成绩。 save(): 函数通过打开文件,编辑文件,把最高成绩写进文件。 read(): 主要实现从文件中读取最高成绩并且返回。 8. HigeScore类 此类主要记录最高成绩,功能为读取最高成绩,保存,设置最高成绩。 思维导图: 主要实现函数: set(): 设置当前最高成绩。 save(): 函数通过打开文件,编辑文件,把最高成绩写进文件。 read(): 主要实现从文件中读取最高成绩并且返回。 9. FPS类 此类用于计算游戏运行时的实际有效帧率,并可以显示在游戏界面上,便于开发调试。 update(): 计算最近60帧的实际平均用时。 10. FPSManager类 此类用于控制游戏帧率,避免在高级终端上游戏进行过快。 FPSManager(): 构造函数,用于设定最大帧率并初始化缓冲区。用fpsBuffer[]记录最近maxFps帧每一帧的运行用时。 state(): 更新显示状态,当测试帧率超过设定最大帧率时,以毫秒为单位进行手动延时。 getFps(): 通过统计缓冲区中最近maxFps帧的用时,计算当前理论传输帧率。 第四章 实验总结 队内总结: 通过这次计算机程序设计的实验——基于android的拼图游戏应用开发,拓宽了我们的视野,使得对程序设计的理解更加深刻,对程序的编写更加熟练。锻炼了我们的工程代码的能力,以前我们都是编写短代码,对系统性的工程接触的并不多,通过这次实验,培养了我们的大局观念,对软件有了一个全新的认识和体会。 组内人员有了良好的默契,配合较好,分工明确,能够把组长分配的任务按时完成好,通过长时间的一起实验,小组作为一个整体能够共同进步,大家一起努力。 同时也暴露出许多问题,小组成员基础不一,因此工作完成量不同,有的完成的比较多而且软件的核心部分,难度较大,有的人完成工作较简单,还希望组内人员能够继续加强基本功,多多练习,提高自己的程序设计能力。 总的来说这次试验比较成功,完成的情况较好,有了一个比较成熟的作品,达到了预期的实验目的。 致 谢 一个月的实践过程中,得到了教员的指导,有良好的实验室环境,感谢学校课程实践的激励,让我们能按时保质完成项目。 感谢老师,长期以来给予我们的学习方法的指导。 最后,感谢所有的老师和同学,在学习和生活中给我们支持和帮助。 参考文献 [1] 杨丰盛,安卓应用开发揭秘,机械工业出版社 [2] [3] [4] 27
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服