1、课程设计说明书 NO.1 沈 阳 大 学 推箱子推箱子小游戏小游戏 1.1.课程设计的目的课程设计的目的 通过课程设计,巩固 Java 基础知识,增进编程基本功,熟练 eclipse 和 EditPlus 的使用方法,通过该系统的设计与开发,将所学知识真正的应用于实践当中,培养实际 动手能力。并在设计实践过程中,学习到更深的知识,掌握先进的 Java 技术,从而来 增强对一个系统设计的整体认识,熟悉软件开发过程,更深刻的理解软件工程的知识。 2.2.设计方案论证设计方案论证 2.12.1 设计思路设计思路 经典的推箱子是一个来自日本的古老游戏,目的是在训练人的逻辑思考能力。在一 个狭小的仓库中
2、,要求把木箱从开始位置推放到指定的位置。在仓库有障碍物,稍不小 心就会出现箱子无法移动或者通道被堵住的情况,而且箱子只能推,不能拉,所以需要 巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。本 游戏一共 10 关,由易到难,每一关都有初化、按键处理、重置及退出功能。 (1)初始化包括屏幕初始化和每一关卡的初始化,屏幕被初始化宽 80 像素,高 25 像素。 (2)按键处理包括移动小人和移动箱子,通过移动上下左右键来控制小人的移动, 从而推动箱子,以把箱子推到指定的目的地为过关。 (3)每一关都可以重置,按选项重新开始可以重置当前关。 (4)可以进行选关操作,按选项选关
3、可以选择 1-10 关的任一关。 (3)可以返回至上一位置,按选项返回可以退回到上一位置,相当于悔一步。 (4)按选项退出键可以在任何时候退出游戏。 2.22.2 详细设计详细设计 2.22.21 1 系统模块图系统模块图 本程序包括 5 个模块,分别是初始化模块、画图模块、移动箱子模块、移动小 模块和功能控制模块,如图 1 所示。各个模块的功能描述如下: (1)初始化模块。 该模块包括屏幕初始化和游戏第一关的初始化。屏幕初始化用于输出欢迎信息和操 课程设计说明书 NO.2 沈 阳 大 学 作提示,游戏每一关的初始化是构建每一关的关卡。 (2)画图模块。 该模块主要是被其它模块调用,用于画墙、
4、在空地画箱子、在目的地画箱子、画小 人和画目的地。 (3)移动箱子模块。 该模块用于移动箱子, 包括目的地之间、 空地之间和目的地与空地之间的箱子移动。 (4)移动小人模块。 该模块用于控制小人移动,从而推动箱子到目的地。 (5)功能控制模块。 该模块是几个功能函数的集合,包括屏幕输出功能、指定位置状态判断功能和关卡 重置功能。 图图 1 1 系统模块图系统模块图 2.22.22 2 任务执行流程图任务执行流程图 游戏从第一关开始,按上下左右方向键控制小人移动来推动箱子,可以在游戏中的 任何时候按退出键退出。 如果游戏无成功希望, 可以按空格键回到当前任务的开始状态; 如果成功完成当前关,则进
5、入下一关,如果当前关是最后一关,则显示通关信息,提示 游戏结束。 游戏同时还具有时间和步数的记录, 在开始游戏之前首先把图片添加到pic目录下, 程序会自动获取该目录下的所有文件, 推箱子游戏 初 始 化 模 块 画 图 模 块 移 动 箱 子 模 块 移 动 小 人 模 块 功 能 控 制 模 块 课程设计说明书 NO.3 沈 阳 大 学 图图 2 2 任务任务流程流程图图 第一关开始 开始游戏 是否继续完 成 有无成功希 望 是否成功 是否是第四关 进入下一关 按空格后退一步 按退出键退出 显示通关信息 否 否 是 是 是 是 是 否 否 课程设计说明书 NO.4 沈 阳 大 学 2.22
6、.23 3 类及实现的功能类及实现的功能 本程序包括三个类文件:主类 Main.java,类 Gui.java,类 Readmap.java。其中类 Main.java 包含 main () 方法。 Main extends JFrame. Gui 继承 JFrame 并且实现 ActionListener 这个接口。AbstractAction() Action 接口提供 ActionListener 接口的一个有用扩展,以便若干控件访 问相同的功能。Readmap.java 主要是实现地图的初始化以及每一关地图的重载。 keyPressed 的功能是响应工人和箱子的移动以及工人、箱子、墙之间的碰撞检测。 表表 1 1 成员变量表成员变量表 成员变量 变量类型 名称 开始状态 Boolean Start 窗口高度 int fHeight 窗口宽度 int fWidth 计时器 Timer timer 延时 int de