Java课程设计扫雷小游戏

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Java扫雷游戏设计报告1·设计内容及要求1.1·扫雷小游戏的基本要求扫雷小游戏主要采用Java语言编写,适合windowsXP以下的系统,以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.游戏设计流程图开始结束定义并初始化个按钮,菜单等菜单按钮事件处理开局选择级别标记声音英雄榜退出重新开始方块是否点中雷展示相应的效果菜单按钮NY5·代码实现5.1类之间的关系图MainFrameCustomDialogLedNumberMineGridAboutDialogImageFactoryLevelInfoLogDialogUserDialogVoiceJLableJButton图1-6类之间的关系图5.2各界面图及代码:5.2.1游戏菜单界面图1-7游戏菜单界面其主要代码为:privatevoidsetMenuBar(){//设置菜单项JMenuBarmenuBar=newJMenuBar();menuBar.setBorder(BorderFactory.createLineBorder(Color.WHITE,2));JMenugameMenu=newJMenu(游戏(G));JMenuhelpMenu=newJMenu(帮助(H));gameMenu.setMnemonic('G');helpMenu.setMnemonic('H');声音=newVoice();startItem=newJMenuItem(开局(N));startItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F2,0));logItem=newJMenuItem(扫雷英雄榜(T)...);markCheckItem=newJCheckBoxMenuItem(标记(?)(M));soundItem=newJCheckBoxMenuItem(声音(S));exitItem=newJMenuItem(退出(X));aboutItem=newJMenuItem(关于扫雷(A)...);levelItem[0]=newJRadioButtonMenuItem(初级(B));levelItem[1]=newJRadioButtonMenuItem(中级(I));levelItem[2]=newJRadioButtonMenuItem(高级(E));levelItem[3]=newJRadioButtonMenuItem(自定义(C)...);雷区界面设计代码:主要代码privatePolygonsegmentPolygon[];privateintnumberSegment[][]={{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};privateintdiv[]={1,10,100,1000,10000,100000};privateImagenumberImage[];privateColorfontColor=Color.red;//thecolorofnumberprivateColorbgColor=Color.black;privateColormaskColor=Color.darkGray;privateintdWidth=12;privateintdHeight=21;5.2.3自定义扫雷界面图2-1自定义扫雷界面其主要代码为:privateJTextFieldwidthField;privateJTextFieldheightField;privateJTextFieldmineField;privateJButtonconfirmButton;privateJButtoncancelButton;privatestaticLevelInfolevel;publicCustomDialog(Frameframe,LevelInfolevelInfo){}publicvoidactionPerformed(ActionEvente){}publicstaticLevelInfogetUserLevel(JFrameframe,LevelInfolevelInfo){CustomDialogdialog=newCustomDialog(frame,levelInfo);returnlevel;}5.2.4扫雷排行榜界面图2-2扫雷排行榜界面其主要代码为:publicLogDialog(JFrameframe,LevelLoglog[]){super(frame,扫雷英雄榜,true);getContentPane().setLayout(null);levelLog=log;logArea=newJTextArea();logArea.setEditable(false);logArea.setBackground(UIManager.getColor(CheckBox.background));logArea.setBounds(10,10,160,60);getContentPane().add(logArea,null);resetButton=newJButton(重新计分);resetButton.setBounds(10,70,90,25);resetButton.addActionListener(this);getContentPane().add(resetButton,null);setTextArea();confirmButton=newJButton(确定);confirmButton.setBounds(105,70,60,25);confirmButton.addActionListener(this);getContentPane().add(confirmButton,null);setSize(180,140);setLocationRelativeTo(frame);setResizable(false);show();}6·扫雷总结在这次将近两个周的课程设计中我受益匪浅。首先是老师对我们所学过的知识进行复习,并给我们介绍了一些未知的领域,拓展了我们的知识面。然后老师带领我们做扫雷游戏,在这个过程中我们有学到了不少东西。我在写程序是也遇到了不少的问题,不过在我们的共同努力以及老师的指导下完成了任务。在这次课程设计中,,但是在看程序的过程中,不断的上网查资料以及翻阅相关书籍,通过不断的模索,测试,发现问题,解决问题和在老师的帮助下一步一步慢慢的正确运行程序,终于完成了这次课程设计,虽然这次课程设计结束了但是总觉得自已懂得的知识很是不足,学无止境,以后还会更加的努力深入的学习。

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功