1、题目二 扫雷游戏2.1 题目需求简要阐述设计题目的功能要求等。首先,对游戏了解的多少分别设置了不同的级别,玩家可以随着自己对游戏的熟悉程度不断加深而选择万更高的级别,可谓趣味百出,其乐无穷啊!2.2 设计的内容及要求设计内容:设计要求:1、扫雷游戏氛围初级、中级、高级三个级别,扫雷英雄榜存储每个级别的好成绩,即挖出的全部地雷且用时最少者。单击游戏菜单选择“初级” 、“中级”、“高级”或“查看英雄榜”;2、选择级别后将出现相应级别的扫雷区域,这时用户使用鼠标左键单击雷区中的任何一个地方便启动计时器;3、用户要揭开某个方块,可单击它。若所揭方块下有雷,用户便输了这一局,若所揭方块下五雷,则显示一个
2、数字,该数字代表方块的周围的 8 个方块中共有多少颗雷;4、如果用户认为某个方块下埋着雷,单击右键可以在方块上标记一个用户可以识别的记号,级给出一个扫雷图标。用户每标记出一个扫雷标记(无论用户的标记是否正确),程序将显示的剩余雷数减少一个;5、扫雷胜利后(用时最少者),程序弹出保存成绩的对话框。2.3 总体设计通常包括功能模块划分、功能模块层次、相关类文件及类的调用关系等。在设计扫雷游戏时,需要编写 7 个 Java 源文件:MineGame.java、MineArea.java、Block.java、BlockView.java、LayMines.java、Record.java 和 Sho
3、wRecord.java。1,利用布局管理器设计计算器整体布局,整个系统采用borderlayout,GridLayout 布局,其中使用了 2 个面板和一个二位数组面板。2,利用按钮设计地雷和提示语,通过按钮的事件处理实现按钮操作功能。2.4 详细设计及实现2.4.1 操作界面设计阐述软件的运行及用户操作的界面方案,包括窗口大小位置、控件布局、文字颜色、字体及操作逻辑等。扫雷只有一个类,这个类包含多个函数,每个函数具有不同的功能,在主函数里调用,从而生成扫雷。2.4.2 类成员变量及方法设计介绍各个类的成员变量及方法的设计细节,详细阐述主要方法的算法逻辑。2.4.3 类图及关键算法流程图初始
4、化设置雷数退出?Y左右键点击失败?胜利?N重新开局?局部初始化YY退出2.4.4 源代码分析详细阐述主要功能实现涉及的类及方法,要求对关键代码段进行分析,简述其设计思路。import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Frame extends JFrameJTextField text;JLabel nowBomb,setBomb;int BombNum,BlockNum;/当前雷数,当前方块数int rightBomb,restBomb,restBlock;/找到的地雷数,剩余雷数,剩余
5、方块数/*JMenuBar Bar;JMenu fileMenu;JMenuItem 初级,中级,高级,扫雷英雄榜;*/JButton start=new JButton(“重新开始“);JPanel MenuPanel=new JPanel();JPanel bombPanel=new JPanel();BombbombButton;JPanel c;BorderLayout borderLayout1=new BorderLayout();GridLayout gridLayout1=new GridLayout();public Frame()trysetDefaultCloseOper
6、ation(EXIT_ON_CLOSE);jbInit();catch(Exception exception)exception.printStackTrace();private void jbInit() throws Exceptionc=(JPanel)getContentPane();setTitle(“扫雷 “);c.setBackground(Color.YELLOW);MenuPanel.setBackground(Color.GRAY);c.setLayout(borderLayout1);setSize(new Dimension(600,600);setResizabl
7、e(false);/*fileMenu=new JMenu(“游戏“);初级=new JMenuItem(“初级“);中级=new JMenuItem(“中级“);高级=new JMenuItem(“高级“);扫雷英雄榜=new JMenuItem(“扫雷英雄榜“);fileMenu.add(初级);fileMenu.add(中级);fileMenu.add(高级);fileMenu.add(扫雷英雄榜 );初级.addActionListener(this);*/BlockNum=169;BombNum=10;text=new JTextField(“10“,2);/“10”是默认地雷数,3
8、 是文本框的长度nowBomb=new JLabel(“当前雷数“+“:“+BombNum);setBomb=new JLabel(“设置地雷数“);start.addActionListener(new Frame1_start_actionAdapter(this);MenuPanel.add(setBomb);/设置地雷数标签MenuPanel.add(text);/设置地雷数文本框MenuPanel.add(start);/重新开始MenuPanel.add(nowBomb);/当前地雷数标签c.add(MenuPanel,java.awt.BorderLayout.SOUTH);/设
9、置菜单面板,下方bombPanel.setLayout(gridLayout1);/地雷边框gridLayout1.setColumns(int)Math.sqrt(BlockNum);gridLayout1.setRows(int)Math.sqrt(BlockNum);bombButton=new Bomb(int)Math.sqrt(BlockNum)(int)Math.sqrt(BlockNum);for(int i=0;i=10elseisNull(ClickedButton);/*左键点击*/public void actionPerformed(ActionEvent e)if(
10、Bomb)e.getSource().isClicked=falseisWin();elsefor(int i=0;i0)bombSource.setForeground(Color.RED);bombSource.setFont(new Font(“,Font.BOLD,11);bombSource.setText(“F“);/玩家用鼠标右键标注发现的地雷 单击bombSource.isRight=true;restBomb-;elsebombSource.BombFlag=0;else if(bombSource.BombFlag=2)restBomb+;bombSource.setTex
11、t(“Q“);/玩家用鼠标右键标注发现的地雷 双击bombSource.isRight=false;elsebombSource.setText(“);if(bombSource.isBomb=true)if(bombSource.BombFlag=2)rightBomb+;else if(bombSource.BombFlag=2)rightBomb-;nowBomb.setText(“当前雷数“+“:“+restBomb);isWin();public static void main(Stringargs)Frame frame=new Frame();frame.setVisible(
12、true);class Frame1_start_actionAdapter implements ActionListenerprivate Frame adapter;Frame1_start_actionAdapter(Frame adapter)this.adapter=adapter;public void actionPerformed(ActionEvent e)adapter.start_actionPerformed(e);/class Bomb extends JButtonint num_x,num_y;/第几号方块int BombRoundCount;/周围雷数bool
13、ean isBomb;/是否为雷boolean isClicked;/是否被点击int BombFlag;/探雷标记boolean isRight;/是否点击右键public Bomb(int x,int y)num_x=x;num_y=y;BombFlag=0;BombRoundCount=9;isBomb=false;isClicked=false;isRight=false;class Bomb_actionAdapter implements ActionListenerprivate Frame adapter;Bomb_actionAdapter(Frame adapter)thi
14、s.adapter=adapter;public void actionPerformed(ActionEvent e)adapter.actionPerformed(e);class Bomb_mouseAdapter extends MouseAdapterprivate Frame adapter;Bomb_mouseAdapter(Frame adapter)this.adapter=adapter;public void mouseClicked(MouseEvent e)adapter.mouseClicked(e);总 结对两个星期来的课程设计进行全面总结,写出心得体会。通过这两周的程序设计,在这过程中碰到了许多麻烦,也解决了一些问题,从中学到了不少,以往感觉比较枯燥的课程其实也不是那样,还是蛮有趣的,由于自己平时的功底不好,导致这次的程序设计做的很是费力,以后上课一定要好好听讲,下课一定多敲代码,多练习,一定要把自己的专业学好。附录一、“XXXXXXXXX” 关键源代码题目一的关键源码(不要求全部),若正文中有较详细代码分析,可以不要附录。宋体五号,单倍行距,非关键代码使用