Java课程设计推箱子游戏

上传人:飞*** 文档编号:26986849 上传时间:2018-01-04 格式:PDF 页数:21 大小:1.17MB
返回 下载 相关 举报
Java课程设计推箱子游戏_第1页
第1页 / 共21页
Java课程设计推箱子游戏_第2页
第2页 / 共21页
Java课程设计推箱子游戏_第3页
第3页 / 共21页
Java课程设计推箱子游戏_第4页
第4页 / 共21页
Java课程设计推箱子游戏_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《Java课程设计推箱子游戏》由会员分享,可在线阅读,更多相关《Java课程设计推箱子游戏(21页珍藏版)》请在金锄头文库上搜索。

1、课程设计说明书 NO.1沈 阳 大 学推箱子小游戏1. 课程设计的目的通过课程设计, 巩固 Java 基础知识, 增进编程基本功, 熟练 eclipse 和 EditPlus 的使用方法,通过该系统的设计与开发,将所学知识真正的应用于实践当中,培养实际动手能力。并在设计实践过程中,学习到更深的知识,掌握先进的 Java 技术,从而来增强对一个系统设计的整体认识,熟悉软件开发过程,更深刻的理解软件工程的知识。2. 设计方案论证2.1 设计思路经典的推箱子是一个来自日本的古老游戏, 目的是在训练人的逻辑思考能力。 在一个狭小的仓库中,要求把木箱从开始位置推放到指定的位置。在仓库有障碍物,稍不小心就

2、会出现箱子无法移动或者通道被堵住的情况,而且箱子只能推,不能拉,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。本游戏一共 10 关,由易到难,每一关都有初化、按键处理、重置及退出功能。( 1) 初始化包括屏幕初始化和每一关卡的初始化, 屏幕被初始化宽 80 像素, 高 25像素。( 2) 按键处理包括移动小人和移动箱子, 通过移动上下左右键来控制小人的移动,从而推动箱子,以把箱子推到指定的目的地为过关。( 3)每一关都可以重置,按选项重新开始可以重置当前关。( 4)可以进行选关操作,按选项选关可以选择 1-10 关的任一关。( 3)可以返回至上一位置,按选项

3、返回可以退回到上一位置,相当于悔一步。( 4)按选项退出键可以在任何时候退出游戏。2.2 详细设计2.2 1 系统模块图本程序包括 5 个模块,分别是初始化模块、画图模块、移动箱子模块、移动小模块和功能控制模块,如图 1 所示。各个模块的功能描述如下:( 1)初始化模块。该模块包括屏幕初始化和游戏第一关的初始化。 屏幕初始化用于输出欢迎信息和操课程设计说明书 NO.2沈 阳 大 学作提示,游戏每一关的初始化是构建每一关的关卡。( 2)画图模块。该模块主要是被其它模块调用,用于画墙、在空地画箱子、在目的地画箱子、画小人和画目的地。( 3)移动箱子模块。该模块用于移动箱子, 包括目的地之间、 空地

4、之间和目的地与空地之间的箱子移动。( 4)移动小人模块。该模块用于控制小人移动,从而推动箱子到目的地。( 5)功能控制模块。该模块是几个功能函数的集合, 包括屏幕输出功能、 指定位置状态判断功能和关卡重置功能。图 1 系统模块图2.2 2 任务执行流程图游戏从第一关开始, 按上下左右方向键控制小人移动来推动箱子, 可以在游戏中的任何时候按退出键退出。 如果游戏无成功希望, 可以按空格键回到当前任务的开始状态;如果成功完成当前关,则进入下一关,如果当前关是最后一关,则显示通关信息,提示游戏结束。游戏同时还具有时间和步数的记录, 在开始游戏之前首先把图片添加到 pic 目录下,程序会自动获取该目录

5、下的所有文件,推箱子游戏初始化模块画图模块移动箱子模块移动小人模块功能控制模块课程设计说明书 NO.3沈 阳 大 学图 2 任务流程图第一关开始开始游戏是否继续完成有无成功希望是否成功是否是第四关进入下一关按空格后退一步按退出键退出显示通关信息否否是是是是是否否课程设计说明书 NO.4沈 阳 大 学2.2 3 类及实现的功能本程序包括三个类文件: 主类 Main.java , 类 Gui.java , 类 Readmap.java。 其中类Main.java 包含 main() 方法。 Main extends JFrame. Gui 继承 JFrame 并且实现 ActionListener

6、这个接口。 AbstractAction() Action 接口提供 ActionListener 接口的一个有用扩展,以便若干控件访问相同的功能。 Readmap.java主要是实现地图的初始化以及每一关地图的重载。 keyPressed的功能是响应工人和箱子的移动以及工人、箱子、墙之间的碰撞检测。表 1 成员变量表成员变量 变量类型 名称开始状态 Boolean Start 窗口高度 int fHeight 窗口宽度 int fWidth 计时器 Timer timer 延时 int delay 开始时间 Date starttime 步数 int steps 地图容器 MapPanel

7、mapPanel 玩法介绍 String instruction 开始状态 Boolean Start 表 2 方法表方法名 功能 备注Puzzle() 创 建 游戏 窗口 和设 置 图标backaction() 后台操作getmap() 返回地图的方法StartGame() 开始游戏控制,更新开始菜单endgame() 结束游戏控制 弹出结束窗口getmap()/ 返回地图的方法 调用类 spite()menuShowClik() 在游戏中显示完整图片 调用类 class ShowImage actionPerformed() 动作演示menuExit() 退出游戏flush() 清空缓存A

8、、地图设计游戏中用一个 MapFactory 类操作地图,其中用三维矩阵记录游戏地图信息。三维矩阵便于管理, 如果要加入新关卡, 只需要在三维矩阵中加入二维矩阵就可以了, 同时,课程设计说明书 NO.5沈 阳 大 学可以加入不同大小的地图。a、 地图矩阵信息/ 地图坐标状态描述1、 private final int Black = -2; / 外界2、 private final int Wall = -1; / 墙3、 private final int Ground = 0; / 地面4、 private final int Boxes = 1; / 箱子5、 private final

9、 int Boxes_position = 2; / 箱子位置6、 private final int Boxes_in_place = 3; / 箱子移动到合适位置7、矩阵中标有 数字 4 的位置表示 该位置是游戏主角的初始位置B、游戏过程设计游戏中过程中,最为主要地方在于对地图矩阵,以及主角状态信息(包括位置、行走状态等)的维护,主角每行走一步,就更新一次地图信息和主角状态信息。另外一个比较重要的地方是游戏状态的保存方面。 在该游戏中, 使用栈结构保存主角每次行走的状态信息 (包括游戏矩阵和主角位置等) 。 为保存主角信息, 特别开设了一个 undoState类,该类主要作用就是保存玩家每

10、一步的游戏状态,便于撤销。在游戏画面处理和逻辑判断方面,都放在了 GameSurfaceView 类里面。因为考虑到该游戏的逻辑判断和画面绘制较为简单, 不需要长时间的运算, 所以就把很多功能都放在了主线程里。因为采取的是单线程,所以,重画操作都是 事件驱动的。1、地图载入、绘制根据玩家选择的关卡,载入地图矩阵。在载入地图的过程中,根据屏幕大小,对图片进行 了 缩 放 ( 使 用 矩 阵 缩 放 ) 。 这 些 功 能 主 要 在 setMapAndactorPosition(); initPicture(); 函数中实现2、地图切换玩家每过一关,就载入一张新地图,地图信息都保存在 priva

11、te int map 对象里面,然后重新绘制地图。该功能主要在 nextPass() 函数实现。3、重玩如果玩家选择重玩,只要重新把目前关卡的地图载入就可以了,同时删除原有的信息。该功能在 replacePass() 函数实现。课程设计说明书 NO.6沈 阳 大 学4、后退 撤销如果玩家选择该功能,主要从栈对象中 private Stack save 弹出前一步的游戏状态记录即可。该功能主要在 undo() 函数实现。5、游戏是否结束玩家每移动一步, 就判断是否所有箱子都移动到了相应位置 (实现该判断的方法有很多,考虑到游戏的可扩展性,在该游戏中主要通过 isGameover() 遍历地图矩阵

12、 来进行判断的,如果游戏结束则提示玩家过关,在 gameState() 函数中实现。3. 设计结果与分析(1) 打开推箱子游戏,系统默认的是第一关,通过控制小键盘上的方向键来使大兵小猪移动从而推动箱子到达指定外置, 箱子只可以推 , 不可以拉 , 而且一次只能推动一个,胜利条件就是把所有的箱子都推到目的地。游戏界面下方显示当前关数,完成该关所需的时间以及总共推动箱子的步数。游戏主界面如图 2 所示; 移动箱子, 使其到达指定位置, 显示游戏用时 00: 00: 04,共走 11 步,恭喜您通过该关,点击“是”进入下一关,游戏界面如图 3 所示:图 3 游戏主界面课程设计说明书 NO.7沈 阳

13、大 学图 4 游戏成功界面(2) 打开推箱子游戏,点击“选项“按钮,选中选关,输入你想要玩的关数,例如第 3 关,点击确定,游戏界面如图 4 所示:图 5 开始选关界面课程设计说明书 NO.8沈 阳 大 学图 6 选关成功界面(3) 游戏的帮助功能也很强大,点击帮助按钮,选中“使用说明”,或是“关于”。游戏界面如图 6 和图 7 所示:图 7 使用说明界面课程设计说明书 NO.9沈 阳 大 学4. 设计体会为期两周的课程设计很快就结束了,回顾这两周,累并快乐着。从老师开始给布置课程设计的题目、内容及要求到自己广泛借助互联网查阅资料并独立完成 Java 推箱子小应用程序;从两周前刚接到任务时的茫

14、然与无助到两周后的清晰与明了;从对 Java的编辑器 EditPlus 和 eclipse 初步了解到熟练运用,历经了太多的困难。对于环境变量的配置,我做到了知其然,知其所以然,对 EditPlus 的了解也完全上升了一个层次,从课堂上老师教给的在 dos 界面中输入 Javac 文件名 .java 编译、 Java 文件名 运行到在 EditPlus 中选中 “工具” 、“配置用户组 “, 设置编译和执行相关参数, 按快捷键 Ctrl+1编译、 Ctrl+2 运行,节省了大量时间,使编程效率有了很大的提高。对于推箱子游戏,更是有了进一步的了解,其中用到了 9 张图片,用户可以通过改变图片来改

15、变游戏的显示界面,当然,这个是不被允许的,因为每个程序的代码都有版权, 但对于设计者而言, 却可以更加清楚的了解代码的内部构造, 达到熟能生巧的效果。游戏的帮助和关于设计人性化, 在写代码是遇到了很多问题, 通过和同学们的交流以及在百度知道里的提问,最终达到了理想的效果。通过此次课程设计,将我本学期所学的 JAVA知识得到巩固和应用,在设计的过程中我遇到了很到问题,不过在老师和同学们的帮助和自己的思考下还是很好的完成了。这此课程设计还让我懂得了写程序不能闭门造车,要努力拓宽知识面,开阔视野,拓展思维。它还让我学会了在网上查阅那些无限的资料。通过对推箱子游戏的开发,使我对用 eclipse 开发

16、平台和 EditPlus 编辑器有了一个比较清楚的认识,体会到理论和实践的重要性。5. 参考文献1 赵毅主编 . 跨平台程序设计语言 JavaM. 西安: 西安电子科技大学出版社, 2006 2 柳西玲 . 许斌编著 .Java 语言应用开发基础 M. 北京:清华大学出版社, 2006 3 施霞萍等编著 .Java 程序设计教程 第 2 版 M. 北京:机械工业出版社, 2006 4 美 Herbert Schidt 著 .Java 参考大全 . 鄢爱兰 . 鹿江春译 M. 北京:清华大学出版社, 2006 5 宛延闿等编著 . 实用 Java 程序设计教程 M. 北京:机械工业出版社, 2006 6 陈国君等编著 .Java2 程序设计基础 M. 北京:清华大学出版社, 2006 7 郑莉 . 王行言 . 马素霞编著 .Java 语言程序设计 M. 北京:清华大学出

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 经营企划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号