推箱子--Java课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《面向对象程序设计》
课程设计报告
题目:经典推箱子趣味游戏设计与实现
院(系):信息科学与工程学院
专业班级:计算机科学与技术1201班
学生姓名:**
学号:***********
指导教师:**
20 14 年 12 月 29 日至20 15 年 1 月 9 日
华中科技大学武昌分校制
面向对象程序设计课程设计任务书
目录
1需求与总体设计 (1)
1.1需求分析 (1)
1.2总体设计 (2)
2详细设计 (4)
2.1 mainFrame类 (4)
2.2 mainpanel类 (5)
2.3S o u n d类 (7)
2.4 Readmap类 (7)
3 编码实现 (9)
3.1游戏源码 (9)
4系统测试 (42)
总结 (45)
1需求与总体设计
1.1需求分析
1.1.1功能结构图
推箱子游戏的功能结构图如图1.1所示。
在系统中,编写4个Java类:mainFrame,mainpanel,Sound,Readmap;分别对应初始化游戏界面,游戏操作,背景音乐,绘制地图。
图1.1
1.1.2 UML类图
推箱子系统除了上述4个Java类外,还需要Java系统提供的一些重要的类。这些类之间的UML图如图1.2所示。
图1.2
1.2总体设计
1.2.1 mainFrame类
mainFrame类负责创建系统的主窗口。mainFrame类有多种重要类型的对象,这些对象构成了游戏界面的简明与美观,并且通过监听实现方法赋予了这些组件的相应功能。MainFrame类通过调用Readmap类来实现将地图绘制在游戏主界面,通过调用Sound 类来实现对背景音乐的管理,实现音乐开关以及选择上一曲下一曲的操作。
设计中包括了所有你所能直观见到的图形界面,窗体的大小,下拉菜单中的功能菜单,使得玩家能够很直观的见到所有游戏中的功能.界面中有菜单, 包括:"选项""设置音乐""帮助"。按钮包括:"重来""悔一步""第一关""上一关""下一关""最终关""选关""音乐"等。
1.2.2 mainpanel类
Mainpanel类中集成了小人与箱子的移动规则,并且还包含了对键盘操作移动的响应方法。在本游戏系统中,给人的视觉感受应该是能感受都动作的变化,逼真的人物动作会使系统更有效.通过控制人物,箱子,空地,障碍物在数组中的位置的改变来控制移动
动作.
小人与箱子移动的算法移动中包括正移动,与"悔一步"的负移动. 正移动:小人上下左右的移动是由本组咸英智组员所做,归结起来上下左右是一个判断的算法,判断都是通过判断小人前面是否是空位箱子或者是墙,如果没有就移动;有的话,据判断箱子是否可以移动,最后讨论箱子推过的,小人移动,以及被遮挡住点的图形变化,重新绘制地图,算法判断完毕.
1.2.3 Sound类
Sound类主要功能是播放背景音乐,包含了一些对音乐的操作方法。在玩游戏的同时听一听动听的音乐,有助于舒缓疲劳,放松心情。
1.2.4 Readmap类
Readmap类是绘制地图的类,将已经制作好的地图绘制在游戏界面上。其主要功能是给用户一个友好的游戏界面,游戏中包括50 关的地图,推箱子这个游戏的50 个地图是事先完成的,将所有地图上面的信息以数字的形式储存在一个20*20 的二维数组当中;然后,每一关都按照数组重新绘制地图,这样就拥有了50 张地图。
2详细设计
2.1 mainFrame类
MainFrame类用于初始化屏幕。该类首先用两个for循环初始化屏幕20*20范围内的状态,初始化为0,以后根据实际情况重新赋值;然后设置屏幕输出状态,设置寄存器AX的高位为0,低位为3,表示以80*25的彩色方式显示;最后移动光标到指定的位
置输出。
设置界面的标题,窗口大小,添加按钮组件以及各种组件的布局
super("推箱子咯");//设置标题
setSize(720,720);
setVisible(true);//设置窗口可见
setResizable(false);
//创建按钮
btnrenew=new JButton("重来");
btnback=new JButton("悔一步");
btnlast=new JButton("上一关");
btnnext=new JButton("下一关");
btnchoose=new JButton("选关");
btnfirst=new JButton("第1关");
btnover=new JButton("最终关");
btnmuc=new JButton("音乐关");
actionPerformed(ActionEvent)
itemStateChanged(ItemEvent)
2.2 mainpanel类
该类用于移动箱子,包括目的地之间、空地之间和目的地与空地之间的箱子移动。小人与箱子移动的算法移动中包括正移动,与"悔一步"的负移动. 正移动:小人上下左右的移动是由本组咸英智组员所做,归结起来上下左右是一个判断的算法,判断都是通过判断小人前面是否是空位箱子或者是墙,如果没有就移动;有的话,据判断箱子是否可以移动,最后讨论箱子推过的,小人移动,以及被遮挡住点的图形变化,重新绘制地图,算法判断完毕.传出数据记录在,一个栈当中,以备"悔一步"使用. 负移动:通过记录在栈中的数据判断,前一步是的移动方向以及移动使用过的算法,逆向将代码重新运行,同时绘制地图以达到前一步的状态.
Mainpanel类中包含了
(1)重来:重新开始当前关;
(2)悔一步:返回上一移动状态(可以连续返回多步)
(3)第一关:游戏系统默认开始关为第一关,此按钮可以将关从其它关跳跃到第一关. (4)上一关:返回到当前关的上一关;
(5)下一关:返回到当前关的下一关;