1、Java扫雷游戏课程设计实训报告一总体设计本系统共包括3个java源文件和4个图像文件。1类之间的关系如图1.1所示。2java源文件及其功能如表1所示。表1 源文件及其功能序号文件名主要功能1Main.java生成的类负责创建程序窗口,含有main方法,游戏从该类开始执行。2MainBomb.java为主类创建整个挖雷游戏的对象,包括窗口,布雷,判断等等。3Bomb.java负责创建游戏所需要的按钮。3.图像文件Bomb.gif:地雷方块上的图标。question.gif:疑惑探雷是否正确。bomb_big.gif:触雷时方块上的图标。flag.gif:探雷标记。二、详细设计1主类Main(
2、1)成员变量(见表2)表2 成员变量描述变量类型备注游戏运行MainBomb临时变量(2)成员变量(见表3)表3 名称功能备注main游戏开始(3)源代码见文件Main.javaimport java.awt.*; import java.awt.event.*; import javax.swing.*;/*主类*/public class Main public static void main(String args) (new MainBomb().show(); 2挖雷游戏 MainBomb(1)成员变量(见表4)表4成员变量描述变量类型名称雷数设置JTextFieldtext当前方
3、块数intBlockNum当前雷数intBombNum开始JButtonstart踩雷Iconicon_bomb踩雷标记Iconicon_bomb_big雷标记Iconicon_flag疑惑是否有雷Iconicon_question目录面板PanelMenuPamel主面板PanelmainPanel雷BombbombButton该方块是否有雷boolean周围无雷方块周围的雷数int周围的雷数方块上的雷标记int探雷标记显示方块信息JLabelLabel方块在雷区的位置PointP布雷RandomSetset判断标记是否正确DetermineDetermine是否获得胜利WinnerWin雷
4、标数目intcount周围方块的雷数intcount1(2)方法见(表5)表5 方法名功能备注Game创建程序窗口barnewGame新开局actionPerformed处理ActionEvent事件接口方法设置方块是否有雷设置雷的值设置是雷时的图标设置label上的图标设置无雷时的图标设置label上的图标设置有雷时的名字设置label上的文字设置周围的雷数设置周围的雷数获取名字返回方块label上的文字获取周围雷数返回周围的雷数设置雷区位置设置属性P获取雷区位置返回属性P获取探雷标记返回探雷标记mousePressed处理鼠标按下事件接口方法mouseClicked处理鼠标双击事件接口方法
5、mouseReleased处理鼠标释放事件接口方法mouseExited处理鼠标退出事件接口方法mouseEntered处理鼠标进入事件接口方法MinesSquare创建雷区gameOver游戏失败判断雷标是否正确正确返回true错误返回false布雷随机布雷判断是否成功成功返回true失败返回false(3)源代码见文件MainBomb.javaimport java.awt.*; import java.awt.event.*; import javax.swing.*;/*窗口及算法实现类*/class MainBomb extends JFrame implements ActionL
6、istener,MouseListener public JTextField text; public Label nowBomb,setBomb; public int BlockNum,BombNum; /当前方块数当前雷数 public Icon icon_bomb = new ImageIcon(Bomb.gif); /踩雷 public Icon icon_bomb_big = new ImageIcon(bomb_big.gif); /踩雷标记 public Icon icon_flag = new ImageIcon(flag.gif); /雷标记 public Icon ic
7、on_question = new ImageIcon(question.gif); /疑惑是否有雷 public JButton start = new JButton( 开始 ); public Panel MenuPamel = new Panel(); public Panel mainPanel = new Panel(); public Bomb bombButton; /*界面设计*/ public MainBomb() super(成型04-2 李超 JAVA课程设计 ); BlockNum = 64; BombNum = 10; Container c=getContentP
8、ane(); c.setBackground(Color.gray); c.setLayout(new BorderLayout(); text=new JTextField(10 ,3); nowBomb = new Label(当前雷数+ +BombNum+); setBomb= new Label(设置地雷数); start.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) BombNum = Integer.parseInt(text.getText().trim(); i
9、f(BombNum = 10 & BombNum 50 ) replay(); else JOptionPane msg = new JOptionPane(); JOptionPane.showMessageDialog(null,您设置的地雷数太多了,请重设!,错误,2); ); MenuPamel.add(setBomb); MenuPamel.add(text); MenuPamel.add(start); MenuPamel.add(nowBomb); c.add(MenuPamel,North); mainPanel.setLayout(new GridLayout( (int)M
10、ath.sqrt(BlockNum) , (int)Math.sqrt(BlockNum) ); bombButton=new Bomb (int)Math.sqrt(BlockNum) ; for(int i = 0 ; i (int)Math.sqrt(BlockNum) ; i+) bombButton i =new Bomb (int)Math.sqrt(BlockNum) ; for(int i = 0 ; i (int)Math.sqrt(BlockNum) ; i+ ) for(int j = 0 ; j (int)Math.sqrt(BlockNum) ; j+ ) bombB
11、utton i j =new Bomb(i,j); bombButton i j .setForeground( Color.gray); bombButton i j .addActionListener(this); bombButton i j .addMouseListener(this); for(int i = 0 ; i (int)Math.sqrt(BlockNum) ; i+ ) for(int j = 0 ; j (int)Math.sqrt(BlockNum) ; j+ ) mainPanel.add(bombButton i j ); c.add(mainPanel,C
12、enter); startBomb(); setSize(400,400); setLocation(350,200); setResizable(false); /*布雷*/ public void startBomb() for(int i=0;iBombNum;i+) int x =(int)(Math.random()*(int)(Math.sqrt(BlockNum)-1); int y =(int)(Math.random()*(int)(Math.sqrt(BlockNum)-1); if(bombButton x y .isBomb=true) i-; else bombBut
13、ton x y .isBomb=true ; /*重新开始*/ public void replay() nowBomb.setText(当前雷数+ +BombNum+); for(int i = 0 ; i (int)Math.sqrt(BlockNum) ; i+) for(int j = 0 ; j (int)Math.sqrt(BlockNum) ; j+) bombButton i j .isBomb=false; bombButton i j .isClicked=false; bombButton i j .setEnabled(true); bombButton i j .setText(); bombButton i j .setIcon(null); startBomb(); /*是否挖完了所有的雷*/ public void isWin() int findBomb=0; /找到的地雷数 for(int i=0;i (int)Math.sqr
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1