基于android的推箱子游戏设计毕业论文内容摘要:
d SpriteThread SpriteMoveThread GameViewDrawThread 算法的设计 该游戏没有涉及到复杂的算法设计,关键在于对地图矩阵的操作。 游戏中用一个 MapList 类操作地图,其中有两个三维数组记录游戏地图信息,一个三维数组表示第一层地图即地板层,另一个三维数组表示第二层地图即建筑层 , 三维矩阵便于管理,如果要加入新关卡,只需要在三维矩阵中加入二维矩阵就可以了 [11]。 天津大学仁爱学院 2020届本科生毕业设计(论文) 11 游戏过程中,最为主要 的 地方在于对地图矩阵,以及小人状态信息(包括位置、行走状态等)的维护,小人每行走一步,就更新一次地图信息和小人状态信息。 另外一个比较重要的地方是游戏状 态的保存方面 [12]。 为保存小人信息,特别开设了一个 MySprite 类,该类主要作用就是保存玩家每一步的游戏状态,便于撤销。 逻辑判断过程中,需要对地图进行维护,主要是通过小人的移动位置进行更新的。 小人每次移动时,四周的物体如下图 : 图 32 主角四周物体 当 小人 是在移动箱子时,箱子四周有以下几种物体 : 图 33 箱 子四周物体 小人 地面 移动到合适位置的箱子 未在合适位置的箱子子 墙壁 箱子应摆放到的位置 箱子 箱子应该摆放到的位置 箱子、墙壁 地面 已摆放到合适位置的箱子 未摆放到合适位置的箱 子 天津大学仁爱学院 2020届本科生毕业设计(论文) 12 第四章 游戏的实现 欢迎界面的实现 当玩家运行游戏时,首先看到欢迎界面,欢迎界面是整个游戏的门面。 本游戏的欢迎动画首先是木门打开如图 41,接着是铁门打开如图 42,最后是墙打开如图 43,所有门打开后就会显示一个有山有水的图片如图 44。 欢迎动画界面是通过改变动画线程中图片的变量值来改变图片的位置。 图 41 木门 图 42 铁门 图 43 墙 图 44 山水图 天津大学仁爱学院 2020届本科生毕业设计(论文) 13 菜单界面的实现 玩家在欢迎动画界面需等待 30 秒方能进入菜单界面,也可直接点击屏幕进入菜单界面。 菜单界面是由滚动的背景图片、不动的背景图片,和开始游戏、声音开、声音关、游戏说明、退出游戏图片组成,如图 45 所示。 图 45 菜单界面 开始游戏 当玩家点击开始游戏图片即可进入游戏界面开始游戏,如图 46 所示。 图 46 开始游戏 天津大学仁爱学院 2020届本科生毕业设计(论文) 14 声音控制 玩家进入菜单界面时背景声音是开即显示的是声音开图片, 菜单界面的背景音乐会滚动播放, 如果玩家想要关闭声音,只需点击声音开图片就会关闭声音同时显示声音关图片,如图 47 所示。 声音状态图片是根据 PushBoxActivity 中的声音状态值进行绘制。 图 47 声音控制 游戏说明 当玩家点击游戏说明按钮时玩家会进入游戏说明界面,如图 48 所示,游戏说明界面是由一张说明图片组成,背景设置为白色,玩家如果想要离开此界面只需点击 屏幕即可回到菜单界面。 图 48 游戏说明 天津大学仁爱学院 2020届本科生毕业设计(论文) 15 退出游戏 当玩家点击退出图片时,会直接离开游戏到模拟器的主界面,如图 49 所示。 图 49 退出游戏 游戏界面的实现 游戏界面实现包括地图类的实现,角色类的实现,键盘监听线程的实现,角色移动线程的实现。 当玩家将箱子都推到指定的位置后本关游戏胜利,出现恭喜过关的图片,点击图片进入下一关卡,如图 410 所示。 图 410 胜利进行下一关 天津大学仁爱学院 2020届本科生毕业设计(论文) 16 地图类的实现 该类中包含了两个三维数组, 一个三维数组表示第一层地图即地板层,另一个三维数组表示第二层地图即建筑层。 三维数组中存储着每个关卡的地图, 三维矩阵便于管理,如果要加入新关卡,只需要在三维矩阵中加入一个二维矩阵就可以了。 本游戏设计了两个关卡。 主要代码是: public static int map1[ ][ ][ ] = {//第一层地图,即地板层 { {1,1,1,1, 0, 1, 0, 1,1,1,1,1,1,1}, {1,1,1,0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0}, {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 1}, {1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0}, {0, 1, 0, 1, 0, 3, 0, 1, 0, 1, 0, 1, 0, 1}, {1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0}, {0, 1, 0, 1, 0, 1, 0, 3, 0, 1, 0, 1, 0, 1}, {1, 0, 3, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0}, {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}, {1, 0, 3, 0, 1, 0, 1, 0, 1, 0, 1, 2, 1, 0}, {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}, {1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0}, {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,1,1,1}, {1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,1,1,1} }, { {1,1,1,1, 0, 1, 0, 1,1,1,1,1,1,1}, {1,1,1,0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0}, {0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 1, 0, 1}, {1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0}, {0, 1, 2, 3, 0, 1, 0, 1, 2, 1, 0, 1, 0, 1}, {1, 0, 1, 2, 1, 0, 1, 0, 3, 0, 1, 0, 1, 0}, {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}, {1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0}, {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}, {1, 0, 3, 0, 1, 0, 1, 0, 1, 0, 1, 2, 3, 0}, {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}, {1, 0, 1, 0, 1, 0, 1, 2, 1, 0, 1, 0, 1, 0}, {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,1,1,1}, {1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,1,1,1} } }。 天津大学仁爱学院 2020届本科生毕业设计(论文) 17 public static int map2[ ][ ][ ] = {//第二层地图 { {1,1,1,2, 2, 2, 2, 2,1,1,1,1,1,1}, {1,1,1,2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2}, {2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 1, 0, 2, 0, 0, 2, 0, 0, 0, 2}, {2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 2}, {2, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 1, 0, 2}, {2, 0, 0, 0, 1, 2, 2, 0, 0, 0, 1, 0, 0, 2}, {2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2, 2, 0, 2}, {2, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2}, {2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2,1,1,1}, {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,1,1,1} }, { {1,1,1,2, 2, 2, 2, 2,1,1,1,1,1,1}, {1,1,1,2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2}, {2, 2, 2, 2, 0, 2, 0, 1, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 1, 0, 0, 0, 0, 2, 2, 2, 0, 2}, {2, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 2, 0, 2}, {2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 2}, {2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2}, {2, 0, 0, 0, 1, 2, 2, 2, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2}, {2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2}, {2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2}, {2, 0, 1, 0, 0, 1, 2, 0, 0, 0, 2, 2, 2, 2}, {2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,1,1,1}, {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,1,1,1} } }。 角色类的实现 角色类对小人进行了封装,记录小人当前的位置、图片和坐标以及状态。 将小人向上走路、向下走路、向左走路、向右走路、向上推箱子、向下推箱子、向左推箱子、向右推箱子的图片 ID 放到数组中进行管理在构造器中根据小人当前的位置换算出当前实际坐标,设置自己封装的绘制方法,根据小人的状态进行绘制,若小人正在移动, 直接绘制图片,若小人静止时,需要进行坐标修正然后再天津大学仁爱学院 2020届本科生毕业设计(论文) 18 绘制图片 [13]。 主要代码是: public void drawMySelf(Canvas canvas, Paint paint){//绘制方法 if(){ (man, X, Y, paint)。 } else{ X = +36*j15*i + 2。 Y = +10*j+25*i 25。 (man, X, Y, paint)。 } } 键盘监听线程的实现 键盘监听线程会定时检测键盘的状态,然后根据状态调用相应的处理。 每次循环需要休眠时间为 150 毫秒,当需要键盘监听时,判断是推箱子还是走路,然后得到当前键盘状态码赋到 action 中, 再 对 action 进行处理判断上、下、左、右键是否被按下。 当上键被按下时,需要先判断是否到界面的最上方,若到最上方将不会再往上,若没到最上方 时,会检测上方是否有箱子,当箱子上方为空地时才可以移动箱子,再判断是否为目的地,如果是目的地需要把箱子设为绿色,如果不是目的地直接移动即可 [14]。 在箱子移动时需要启动箱子的移。基于android的推箱子游戏设计毕业论文
相关推荐
性签名、昵称等进行管理。 图 21 系统功能模型图 天津天狮学院 2020届本科生毕业设计(论文 ) 5 性能需求 根据以上分析,性能需求主要针对用户使用软件的的方便性和系统可靠性等方面进行考虑。 在项目设计中,主要遵循一下原则: ( 1) 可操作性:用户对于软件操作时,界面要简单、方便、直观。 操作过程中要有及时的提示,比如错误提示。 从而保证用户能正确操作软件。 ( 2) 可移植性
州交通大学毕业设计(论文) 2 职能、职位、距离等原因造成的信息联络不畅而带来的企业发展羁绊,通过构建内部通讯、信息发布与交流平台,实现多途径的联络与沟通,减少信息在途中的时间,提高信息的时效性,与此同时,缩短领导与职员之间,各部门之间的距离。 办公自动化系统可分为事务型、管理型和分析决策型三种不同的层次: ( 1)事务型的办公自动化系统:支持一个机构内各办公室的基本事务活动
系统管理员可以对用户进行授权,系统运行稳定,安全可靠。 更多相关参考论文设计文档资源请访问 本参考设计材料,包含项目源代码,屏幕录像指导、项目运行截图、项目设计说明书、任务书、报告书以及文献参考翻译等,完整的设计文件及源代码,资料请联系 68661508 索要 2 项目方案及需求分析 系统结构方案选择 软件工程介绍 软件工程 (Software Engineering,简称
SDK,API 库和技术文档。 Dalvik 调试监控工具 (DDMS)。 DDMS 是一个强大的调试工具,用于查询、监视和暂停活动进程、查看堆栈,访问文 件系统,还有截图和查看日志的功能。 Eclipse 插件 (ADT)。 通过在 Eclipse 软件更新选项下添加 ADT 的安装网址即可按提示完成安装。 插件安装成功后的 Eclipse 开发环境将为 Android
浏览器现在均支持Java applet。 Android开发工具ADT:Android Development Tools在Eclipse编译IDE环境中,需安装ADT Plugin,这是Android在Eclipse上的开发工具。 数据库SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低
则可通过 JNI 调用。 如果需要用底层语言实现一个小型的时间敏感代码,比如 汇编,然后在 java 程序中调用这些功能。 (l)编写带有 native 声明的方法的 java 类, native 所声明的方法既是 java 调用但其实现过程是由别的语言完成的。 (2)使用 javac 命令编译所编写的 java 类,生成可以在 JVM 运行的字节码。 使用 javahjni 命令生成扩展名为