JAVA课程设计扫雷小游戏

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java游戏设计报告

院系计算机科学学院

班级计科11002

姓名张林峰

设计日期2012.12.18—2012.12.29

1·设计内容及要求

1.1·扫雷小游戏的基本要求

扫雷小游戏主要采用Java语言编写,适合windows XP以下的系统,以eclipse 为平台。具体要求如下:

<1>扫雷小游戏分为初级、中级和高级三个级别,扫雷排行榜保存着每个级别的最好成绩,即挖出全部的地雷并且用时最少。单机游戏菜单选择“初级”、“中级”和“高级”。

<2>游戏默认的是初级级别,用户可以选择不同级别将出现对应级别的扫雷区域,单击扫雷区域任一方格以便启动计时器。

<3>用户选择某个方格,单击它就行。若所选择的放阁下有雷,这一局就结束了,若所选择方格下无雷,则会显示一个数字,该数字代表方格周围8个方格中共有几颗雷。

<4>如果用户认为某个方格下有雷,单击右键可以在方格上标记一个用户认为是雷的图标(一个小旗子)。

<5>用户可以选择标记为疑问的方格,可以选择游戏菜单下的标记,或者双击右键所选方格显示(?)图标。

<6>扫雷完成后,程序弹出保存成绩的对话框,用户可以根据自身选择是否保存。

<7>如果用户喜欢有提示音,可以选择游戏菜单中的声音选项,单击扫雷区域任一方格,就会听到吧嗒声。当点中地雷时,将会有爆炸声音响起,胜利后,将播放凯旋的旋律。

1.2需求实现的主要功能

(1)该游戏具有计时功能,即扫完全部地雷所花费的时间。

(2)用户可以选择是否有音效。

(3)用户可以自定义级别,还可以输入任意地雷数。

(4)自动保存扫雷排行榜。

2·需求分析

2.1扫雷区域的布局设计

系统的整体布局为:CardLayout布局,采用菜单、按钮、面板……等组件,菜单项主要有开始,选择级别,自定义,标记,声音,扫雷排行榜,退出,按钮的功能是重新开始游戏(可以选择游戏菜单里的开局,也可以点击企鹅图标重新开始游戏)。

2.2雷区的设计

MineArea类是javax.swing包中Jpanel容器的子类,实现了ActionListener 和MouseListener接口,所创建的对象:mineArea是MineGame类中最重要的成员之一,作为一个容器添加到MineGame窗口的中心。

2.3音效的设计

music类是java.awt包中Frame的子类,通过构造音效声音方法,在MainFrame主类中,通过ActionListener来监视是否已开始游戏,来决定播放计时声,之后又通过ActionListener来监视是否踩到雷和是否完成来决定,播放相应的音乐。

2.4排行榜设计

LogDialog是javax.swing包中Jdialog对话框的子类,并实现了ActiongListener接口。LogDialog创建的对象dialog是MainFrame类(主类)的成员之一,当用户选择查看“英雄榜”菜单项时,该对话框可见,提供了查看扫雷的最好成绩的界面。

3.游戏设计流程图

5·代码实现

5.1类之间的关系图

图1-6类之间的关系图

5.2各界面图及代码:

5.2.1游戏菜单界面

图1-7游戏菜单界面

其主要代码为:private void setMenuBar(){//设置菜单项

JMenuBar menuBar=new JMenuBar();

menuBar.setBorder(BorderFactory.createLineBorder(Color.WHITE, 2));

JMenu gameMenu=new JMenu("游戏(G)");

JMenu helpMenu=new JMenu("帮助(H)");

gameMenu.setMnemonic('G');

helpMenu.setMnemonic('H');

声音=new Voice();

startItem=new JMenuItem("开局(N)");

startItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F2,0)) ;

logItem=new JMenuItem("扫雷英雄榜(T)...");

markCheckItem=new JCheckBoxMenuItem("标记(?)(M)");

soundItem=new JCheckBoxMenuItem("声音(S)");

exitItem=new JMenuItem("退出(X)");

aboutItem=new JMenuItem("关于扫雷(A)...");

levelItem[0]=new JRadioButtonMenuItem("初级(B)");

levelItem[1]=new JRadioButtonMenuItem("中级(I)");

levelItem[2]=new JRadioButtonMenuItem("高级(E)");

levelItem[3]=new JRadioButtonMenuItem("自定义(C)...");

雷区界面设计代码:

主要代码

private Polygon segmentPolygon[];

private int numberSegment[][]={

{0,1,2,3,4,5},//0

{1,2},//1

{0,1,3,4,6},//2

{0,1,2,3,6},//3

{1,2,5,6},//4

{0,2,3,5,6},//5

{0,2,3,4,5,6},//6

{0,1,2},//7

{0,1,2,3,4,5,6},//8

{0,1,2,3,5,6}//9

};

private int div[]={1,10,100,1000,10000,100000};

private Image numberImage[];

private Color fontColor=Color.red;//the color of number

private Color bgColor=Color.black;

private Color maskColor=Color.darkGray;

private int dWidth=12;

private int dHeight=21;

相关文档
最新文档