ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:318.98KB ,
资源ID:3746047      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3746047.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java课程设计报告扫雷小游戏.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Java课程设计报告扫雷小游戏.docx

1、Java课程设计报告扫雷小游戏JAVA语言课程设计报告题 目:扫雷小游戏设 计 者: 专业班级: 学 号: 指导教师: 2011年 12月 12日 计算机学院目录:1设计内容及要求.11.1扫雷小游戏的基本要求.11.2 需求实现的主要功能.12需求分析.12.1 扫雷区域的布局设计.12.2 雷区的设计12.3 音效的设计.13 总体设计.23.1总体功能图.23.2游戏设计流程图24 主要功能设计34.1 雷区设计流程图34.2 音效设计流程图44.3 排行榜设计流程图55 代码实现.65.1 类之间的关系图65.2 各界面图及代码:65.2.1 游戏菜单界面65.2.2 游戏登录界面(初

2、级、中级、高级).85.2.3自定义扫雷界面.156扫雷总结187参考文献181设计内容及要求1.1扫雷小游戏的基本要求 扫雷小游戏主要采用Java语言编写,适合windows XP 以下的系统,以eclipse为平台。具体要求如下: 扫雷小游戏分为初级、中级和高级三个级别,扫雷排行榜保存着每个级别的最好成绩,即挖出全部的地雷并且用时最少。单机游戏菜单选择“初级”、“中级”和“高级”。 游戏默认的是初级级别,用户可以选择不同级别将出现对应级别的扫雷区域,单击扫雷区域任一方格以便启动计时器。 用户选择某个方格,单击它就行。若所选择的放阁下有雷,这一局就结束了,若所选择方格下无雷,则会显示一个数字

3、,该数字代表方格周围8个方格中共有几颗雷。 如果用户认为某个方格下有雷,单击右键可以在方格上标记一个用户认为是雷的图标(一个小旗子)。 用户可以选择标记为疑问的方格,可以选择游戏菜单下的标记,或者双击右键所选方格显示(?)图标。 扫雷完成后,程序弹出保存成绩的对话框,用户可以根据自身选择是否保存。 如果用户喜欢有提示音,可以选择游戏菜单中的声音选项,单击扫雷区域任一方格,就会听到吧嗒声。当点中地雷时,将会有爆炸声音响起,胜利后,将播放凯旋的旋律。1.2 需求实现的主要功能(1) 该游戏具有计时功能,即扫完全部地雷所花费的时间。(2) 用户可以选择是否有音效。(3) 用户可以自定义级别,还可以输

4、入任意地雷数。(4) 自动保存扫雷排行榜。2需求分析2.1 扫雷区域的布局设计系统的整体布局为:CardLayout 布局,采用菜单、按钮、面板等组件,菜单项主要有开始,选择级别,自定义,标记,声音,扫雷排行榜,退出,按钮的功能是重新开始游戏(可以选择游戏菜单里的开局,也可以点击企鹅图标重新开始游戏)。2.2 雷区的设计MineArea类是javax.swing 包中Jpanel容器的子类,实现了ActionListener和MouseListener接口,所创建的对象:mineArea是MineGame类中最重要的成员之一,作为一个容器添加到MineGame窗口的中心。2.3 音效的设计 m

5、usic类是java.awt包中Frame的子类,通过构造音效声音方法,在MainFrame主类中,通过ActionListener来监视是否已开始游戏,来决定播放计时声,之后又通过ActionListener来监视是否踩到雷和是否完成来决定,播放相应的音乐。2.4 排行榜设计LogDialog是javax.swing包中Jdialog对话框的子类,并实现了ActiongListener接口。LogDialog创建的对象dialog是MainFrame类(主类)的成员之一,当用户选择查看“英雄榜”菜单项时,该对话框可见,提供了查看扫雷的最好成绩的界面。3 总体设计3.1总体功能图 图1-1 总

6、体功能图3.2游戏设计流程图 图1-2 游戏设计流程图4 主要功能设计4.1 雷区设计流程图图1-3 雷区设计流程图4.2 音效设计流程图图1-4 音效设计流程图4.3 排行榜设计流程图图 1-5 排行榜设计流程图5 代码实现5.1 类之间的关系图图1-6 类之间的关系图5.2 各界面图及代码:5.2.1 游戏菜单界面图1-7 游戏菜单界面其主要代码为:private void setMenuBar() /设置菜单项 JMenuBar menuBar = new JMenuBar(); menuBar.setBorder(BorderFactory.createLineBorder(Color

7、.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 = ne

8、w JCheckBoxMenuItem(标记(?)(M); soundItem=new JCheckBoxMenuItem(声音(S); exitItem = new JMenuItem(退出(X); aboutItem = new JMenuItem(关于扫雷(A).); startItem.setMnemonic(N); exitItem.setMnemonic(X); aboutItem.setMnemonic(A); aboutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1,0); logItem.setMnemoni

9、c(T); soundItem.setMnemonic(S); soundItem.setSelected(sound); markCheckItem.setMnemonic(M); markCheckItem.setSelected(markCheck); gameMenu.add(startItem); gameMenu.addSeparator(); /radio group levelItem = new JRadioButtonMenuItem4; ButtonGroup levelGroup = new ButtonGroup(); levelItem0 = new JRadioB

10、uttonMenuItem(初级(B); levelItem1 = new JRadioButtonMenuItem(中级(I); levelItem2 = new JRadioButtonMenuItem(高级(E); levelItem3 = new JRadioButtonMenuItem(自定义(C).); levelItem0.setMnemonic(B); levelItem1.setMnemonic(I); levelItem2.setMnemonic(E); levelItem3.setMnemonic(C); for(int i=0;i4;i+) levelGroup.add

11、(levelItemi); levelItemi.addActionListener(this); gameMenu.add(levelItemi); levelItemcurrentLevel.setSelected(true); gameMenu.addSeparator(); gameMenu.add(markCheckItem); gameMenu.addSeparator(); gameMenu.add(soundItem); gameMenu.addSeparator(); gameMenu.add(logItem); gameMenu.addSeparator(); gameMe

12、nu.add(exitItem); helpMenu.add(aboutItem); startItem.addActionListener(this); markCheckItem.addActionListener(this); soundItem.addActionListener(this); logItem.addActionListener(this); exitItem.addActionListener(this); aboutItem.addActionListener(this); menuBar.add(gameMenu); menuBar.add(helpMenu);

13、setJMenuBar(menuBar); 5.2.2 游戏登录界面(初级、中级、高级) 图1-8 初级扫雷界面 图1-9 中级扫雷界面图2.0 高级扫雷界面其主要代码为:private LevelLog levelLog; private JTextArea logArea; private JButton resetButton; private JButton confirmButton; public LogDialog(JFrame frame, LevelLog log) super(frame, 扫雷英雄榜, true); getContentPane().setLayout(n

14、ull); levelLog = log; logArea = new JTextArea(); logArea.setEditable(false); logArea.setBackground(UIManager.getColor(CheckBox.background); logArea.setBounds(10,10,160,60); getContentPane().add(logArea, null); resetButton = new JButton(重新计分); resetButton.setBounds(10,70,90,25); resetButton.addAction

15、Listener(this); getContentPane().add(resetButton, null); setTextArea(); confirmButton = new JButton(确定); confirmButton.setBounds(105,70,60,25); confirmButton.addActionListener(this); getContentPane().add(confirmButton, null); setSize(180,140); setLocationRelativeTo(frame); setResizable(false); show(

16、); private void setTextArea() logArea.setText(初级: + levelLog0.toString() + 中级: + levelLog1.toString() + 高级: + levelLog2.toString(); public void actionPerformed(ActionEvent e) if(e.getSource()=resetButton) for(int i=0;i=0;i-) g.drawImage(numberImagedg/divi,(bound-i)*dWidth,0,this); dg %= divi; return

17、 image; public void init() segmentPolygon = new Polygon7; numberImage = new Image10; /setup polygons setNumberPolygon(); setNumberImage(); public void setBackGround(Color bgc) bgColor = bgc; public void setFontColor(Color fc) fontColor = fc; public void setMaskColor(Color mkc) maskColor = mkc; publi

18、c void setDigitWidth(int w) dWidth = w; init(); public void setDigitHeight(int h) dHeight = h; init(); public void setDigitSize(int w, int h) dWidth = w; dHeight = h; init(); private void setNumberImage() int i = 0; int j = 0; int k; Graphics g; while(i10) numberImagei = new BufferedImage(15,20,Buff

19、eredImage.TYPE_INT_RGB); g = numberImagei.getGraphics(); g.setColor(bgColor); g.fillRect(0,0,15,20); g.setColor(Color.DARK_GRAY); j = 0; while(jnumberSegment8.length) k = numberSegment8j; g.fillPolygon(segmentPolygonk); j+; g.setColor(fontColor); j = 0; while(jnumberSegmenti.length) k = numberSegmen

20、tij; g.fillPolygon(segmentPolygonk); j+; i+; public void setNumberPolygon() int mid = dHeight/2+1; segmentPolygon0 = new Polygon(); segmentPolygon0.addPoint(2, 1); segmentPolygon0.addPoint(dWidth-2,1); segmentPolygon0.addPoint(dWidth-5,4); segmentPolygon0.addPoint(4,4); segmentPolygon1 = new Polygon

21、(); segmentPolygon1.addPoint(dWidth-1, 1); segmentPolygon1.addPoint(dWidth-1, mid-1); segmentPolygon1.addPoint(dWidth-2, mid-1); segmentPolygon1.addPoint(dWidth-4, mid-3); segmentPolygon1.addPoint(dWidth-4, 4); segmentPolygon2 = new Polygon(); segmentPolygon2.addPoint(dWidth-1, mid); segmentPolygon2

22、.addPoint(dWidth-1, dHeight-2); segmentPolygon2.addPoint(dWidth-4, dHeight-5); segmentPolygon2.addPoint(dWidth-4, mid+1); segmentPolygon2.addPoint(dWidth-3, mid); segmentPolygon3 = new Polygon(); segmentPolygon3.addPoint(dWidth-2, dHeight-1); segmentPolygon3.addPoint(1, dHeight-1); segmentPolygon3.a

23、ddPoint(4, dHeight-4); segmentPolygon3.addPoint(dWidth-4, dHeight-4); segmentPolygon4 = new Polygon(); segmentPolygon4.addPoint(1, dHeight-2); segmentPolygon4.addPoint(1, mid); segmentPolygon4.addPoint(3, mid); segmentPolygon4.addPoint(4, mid+1); segmentPolygon4.addPoint(4, dHeight-5); segmentPolygo

24、n5 = new Polygon(); segmentPolygon5.addPoint(1, mid-1); segmentPolygon5.addPoint(1, 1); segmentPolygon5.addPoint(4, 4); segmentPolygon5.addPoint(4, mid-3); segmentPolygon5.addPoint(2, mid-1); segmentPolygon6 = new Polygon(); segmentPolygon6.addPoint(3, mid-1); segmentPolygon6.addPoint(4, mid-2); segmentPolygon6.addPoint(dWidth-4, mid-2); segment

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1