1、实训日期2015.12.6至2015.12.11实训成绩指导教师评语指导教师签名:_年 _ 月_日装订线目 录1 实训目的 12 扫雷游戏系统的分析与设计 12.1 系统功能描述 12.2 系统模块设计 13 主要代码清单 34 程序运行与测试 115 实训总结 13扫雷游戏系统的设计与实现1 实训目的随着社会的不断进步,人们所承受的压力不断上升,在游戏层出不穷的时刻,扫雷游戏仍受到不少人的青睐,其本身的性质,决定了人们对它的喜爱程度,不需要特殊的技巧,不需要不断地升级,不需要太多的时间进行初步的熟悉,简简单单却乐趣无穷。2 扫雷游戏系统的分析与设计2.1 系统功能描述(1)该游戏具有计时功能
2、,即扫完全部地雷所花费的时间。(2)用户可以选择是否有音效。(3)用户可以自定义级别,还可以输入任意地雷数。(4)自动保存扫雷排行榜。2.2 系统模块设计系统的整体布局为:CardLayout布局,采用菜单、按钮、面板等组件,菜单项主要有开始,选择级别,自定义,标记,声音,扫雷排行榜,退出,按钮的功能是重新开始游戏(可以选择游戏菜单里的开局,也可以点击企鹅图标重新开始游戏)。2.3 数据库结构设计 系统结构图 系统流程图3 主要代码清单import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Fram
3、e extends JFrame JTextField text; JLabel nowBomb, setBomb; int BombNum, BlockNum; / 当前雷数,当前方块数 int rightBomb, restBomb, restBlock; / 找到的地雷数,剩余雷数,剩余方块 JButton start = new JButton( 开始 ); JPanel MenuPamel = new JPanel(); JPanel bombPanel = new JPanel(); Bomb bombButton; JPanel c; BorderLayout borderLay
4、out1 = new BorderLayout(); GridLayout gridLayout1 = new GridLayout(); public Frame() try setDefaultCloseOperation(EXIT_ON_CLOSE); jbInit(); catch (Exception exception) exception.printStackTrace(); private void jbInit() throws Exception c = (JPanel) getContentPane(); setTitle(扫雷 c.setBackground(Color
5、.WHITE); MenuPamel.setBackground(Color.GRAY); c.setLayout(borderLayout1); setSize(new Dimension(600, 600); setResizable(false); BlockNum = 144; BombNum = 10; text = new JTextField(10 , 3); nowBomb = new JLabel(当前雷数 + : + BombNum); setBomb = new JLabel(设置地雷数 start.addActionListener(new Frame1_start_a
6、ctionAdapter(this); MenuPamel.add(setBomb); MenuPamel.add(text); MenuPamel.add(start); MenuPamel.add(nowBomb); c.add(MenuPamel, java.awt.BorderLayout.SOUTH); bombPanel.setLayout(gridLayout1); gridLayout1.setColumns( (int) Math.sqrt(BlockNum); gridLayout1.setRows( (int) Math.sqrt(BlockNum); bombButto
7、n = new Bomb (int) Math.sqrt(BlockNum) (int) Math.sqrt(BlockNum); for (int i = 0; i (int) Math.sqrt(BlockNum); i+) for (int j = 0; j = 5 & num 50) BombNum = num; else if (num 5) JOptionPane.showMessageDialog(null, 您设置的地雷数太少了,请重设!, 错误, JOptionPane.ERROR_MESSAGE); num=10; else 您设置的地雷数太多了,请重设!BombNum =
8、 num; /* 开始,布雷 */ public void startBomb() nowBomb.setText(: bombButtonij.isBomb = false; bombButtonij.isClicked = false; bombButtonij.isRight = false; bombButtonij.BombFlag = 0; bombButtonij.BombRoundCount = 9; bombButtonij.setEnabled(true); bombButtonij.setText(/设置字体bombButtonij.setForeground(Color
9、.BLUE); rightBomb = 0; restBomb = BombNum; restBlock = BlockNum - BombNum; BombNum; ) int x = (int) (Math.random() * (int) (Math.sqrt(BlockNum) - 1); int y = (int) (Math.random() * (int) (Math.sqrt(BlockNum) - 1); if (bombButtonxy.isBomb != true) bombButtonxy.isBomb = true; i+; CountRoundBomb(); /*
10、计算方块周围雷数 * public void CountRoundBomb() int count = 0; / 当需要检测的单元格本身无地雷的情况下,统计周围的地雷个数 if (bombButtonij.isBomb ! for (int x = i - 1; x i + 2; x+) for (int y = j - 1; y = 0) & (y = 0) & (x ( (int) Math.sqrt(BlockNum) (y ( (int) Math.sqrt(BlockNum) if (bombButtonxy.isBomb = true) count bombButtonij.BombRoundCount = co /* 是否挖完了所有的雷 */ public void isWin() if (bombButtonij.isClicked = true) restBlock-;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1