推箱子--Java课程设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)下一关:返回到当前关的下一关;

相关文档
最新文档