Java扫雷游戏的设计与实现课程设计报告报告.doc
《Java扫雷游戏的设计与实现课程设计报告报告.doc》由会员分享,可在线阅读,更多相关《Java扫雷游戏的设计与实现课程设计报告报告.doc(36页珍藏版)》请在三一办公上搜索。
1、Java应用技术实训报告题 目 起讫日期 所在院系 学生姓名 专 业 班 级 学 号 指导教师 职称 所在单位 年 月 日一总体设计本系统共包括14个java源文件和6个图象文件。1类之间的关系如图1所示。2java源文件及其功能如表1所示。3.图象文件地雷.gif:地雷方块上的图标。无雷.gif:无雷方块上的图标。触雷.gif:触雷时方块上的图标。探雷错误.gif:游戏结束时,指出标雷错误的图标。微笑脸.gif:按钮上的通常图标。哭脸.gif:触雷时按钮上图标。二、详细设计1主类Game(1)成员变量(见表2.11)(2)方法(见表2.12)(3)源代码见文件Game.java2方块Bloc
2、k(1)成员变量(见表2.21)(2)方法(见表2.22)(3)源代码见文件Block.java3雷区 MineSquare(1)成员变量(见表2.31)(2)方法(见表2.32)(3)源代码见文件MineSquare.java4雷标数目 FindAroundMineMarkNumber.java(1)方法(见表2.41)(2)源代码见文件FindAroundMineMarkNumber.java5雷标判断 DetermineMineMarkIsRightOrWrong(1)成员变量(见表2.51)(2)方法(见表2.52)(3)源代码见文件DetermineMineMarkIsRightOr
3、Wrong.java6成片挖开区域 DetermineDigArea(1)成员变量(见表2.61)(2)方法(见表2.62)(3)源代码见文件DetermineDigArea.java7无雷连通区 FindSafeArea(1)方法(见表2.71)(2)源代码见文件FindSafeArea.java8随机布雷 RandomSetMine(1)成员变量(见表2.81)(2)方法(见表2.82)(3)源代码见文件RandomSetMine.java9周围地雷个数 FindAroundMineNumber(1)方法见表(见表2.91) (2)源代码见文件FindAroundMineNumber.ja
4、va10显示剩余雷数 CountMine(1)成员变量(见表2.101)(2)方法(见表2.102)(3)源代码见文件CountMine.java11计时器 TimeCount(1)成员变量(见表2.111)(2)方法(见表2.112)(3)源代码见文件TimeCount.java12英雄榜录入对话框 Record(1)成员变量(见表2.121)(2)方法(见表2.122)(3)源代码见文件Record.java13显示英雄榜对话框 ShowRecord(1)成员变量(见表2.131)(2)方法(见表2.132)(3)源代码见文件ShowRecord.java14挖雷成功 DecideWinn
5、er(1)方法见表(见表2.141)(2)源代码见文件DecideWinner.java源代码Game.javaimport java.awt.event.*;import java.awt.*;import javax.swing.*;import javax.swing.border.*;import java.util.*;import java.io.*;public class Game extends JFrame implements ActionListener JMenuBar bar; JMenu fileMenu; JMenuItem 初级,中级,高级,扫雷英雄榜; in
6、t grade=2; MineSquare 雷阵; JButton buttonPerson; Container con; JPanel box; File 英雄榜=new File(英雄榜.txt); Hashtable hashtable=null; Record 记录对话框=null; ShowRecord 显示英雄榜对话框=null; Game() buttonPerson=new JButton(new ImageIcon(微笑脸.gif); 雷阵=new MineSquare(中级,40,16,16,buttonPerson,记录对话框); buttonPerson.addAct
7、ionListener(this); con=getContentPane(); con.add(雷阵,BorderLayout.CENTER); box=new JPanel(); box.setLayout(new GridLayout(1,3); box.add(雷阵.count.textShowMine); box.add(buttonPerson); box.add(雷阵.time.textShowTime); con.add(box,BorderLayout.NORTH); setVisible(true); addWindowListener(new WindowAdapter(
8、) public void windowClosing(WindowEvent e) System.exit(0); ); setBounds(100,50,360,380); bar=new JMenuBar(); fileMenu=new JMenu(游戏); 初级=new JMenuItem(初级); 中级=new JMenuItem(中级); 高级=new JMenuItem(高级); fileMenu.setMnemonic(G); 初级.setMnemonic(B); 中级.setMnemonic(I); 高级.setMnemonic(E); 扫雷英雄榜=new JMenuItem
9、(扫雷英雄榜); 初级.setMnemonic(T); fileMenu.add(初级); fileMenu.add(中级); fileMenu.add(高级); fileMenu.add(扫雷英雄榜); bar.add(fileMenu); setJMenuBar(bar); 初级.addActionListener(this); 中级.addActionListener(this); 高级.addActionListener(this); 扫雷英雄榜.addActionListener(this); hashtable=new Hashtable(); hashtable.put(初级,初
10、级#+999+#匿名); hashtable.put(中级,中级#+999+#匿名); hashtable.put(高级,高级#+999+#匿名); 记录对话框=new Record(this,hashtable); 记录对话框.setGrade(高级); if(!英雄榜.exists() try FileOutputStream out=new FileOutputStream(英雄榜); ObjectOutputStream object_out=new ObjectOutputStream(out); object_out.writeObject(hashtable); object_o
11、ut.close(); out.close(); catch(IOException e) 显示英雄榜对话框=new ShowRecord(this,hashtable); validate(); public void newGame(String grade,int number,int rows,int cols,int w,int h) buttonPerson.setIcon(new ImageIcon(微笑脸.gif); 记录对话框.setGrade(grade); 雷阵=new MineSquare(grade,number,rows,cols,buttonPerson,记录对话
12、框); con.removeAll(); box.removeAll(); box.add(雷阵.count.textShowMine); box.add(buttonPerson); box.add(雷阵.time.textShowTime); con.add(box,BorderLayout.NORTH); con.add(雷阵,BorderLayout.CENTER); setBounds(10,10,w,h); validate(); public void actionPerformed(ActionEvent e) if(e.getSource()=初级) grade=1; new
13、Game(初级,10,8,8,180,220); if(e.getSource()=中级) grade=2; newGame(中级,40,16,16,360,380); if(e.getSource()=高级) grade=3; newGame(高级,99,22,22,500,520); if(e.getSource()=扫雷英雄榜) 显示英雄榜对话框.显示记录(); 显示英雄榜对话框.setVisible(true); if(e.getSource()=buttonPerson) if(grade=1) newGame(初级,10,8,8,180,220); if(grade=2) newG
14、ame(中级,40,16,16,360,380); if(grade=3) newGame(高级,99,22,22,500,520); public static void main(String args) new Game(); Block.javaimport java.awt.event.*;import java.awt.*;import javax.swing.*;import javax.swing.border.*;public class Block extends JButton implements MouseListener boolean 雷=false, 周围无雷=
15、true; int 周围的雷数=0; int 探雷标记=-1; JLabel label; Point p; public Block() label=new JLabel(); setBorder(BorderFactory.createMatteBorder(1, 1, 0, 0, Color.lightGray); label.setBorder(BorderFactory.createMatteBorder(1, 1, 0, 0, Color.lightGray); label.setHorizontalAlignment(JLabel.CENTER); label.setLayout
16、(new BorderLayout(); label.add(this,BorderLayout.CENTER); p=new Point(0,0);addMouseListener(this); public void 设置是否是雷(boolean b) 雷=b; public boolean 判断是否是雷() return 雷; public void 设置是雷时的图标(Icon icon) label.setIcon(icon); public void 设置周围无雷时的图标(Icon icon) label.setIcon(icon); public void 设置周围有雷时的名字(S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 扫雷 游戏 设计 实现 课程设计 报告
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-2386900.html