java集中上机实验报告.doc
文本预览下载声明
扫雷
一、实验实习目的及要求
加强对C语言的深入理解,提高学生分析问题,解决综合问题的能力。
二、实验实习设备(环境)及要求(软硬件条件)
设备:
操作系统:
编译软件:
三、实验实习内容简介:
1、需求分析
游戏界面设计:游戏界面用BorderLayout和Gridlayout两个布局进行设计界面中间使用Gridlayout设计成Layout设计,界面菜单有雷数的显示和雷数自定义输入的文本框,另外还有个开始按钮,用以确定雷数开始游戏。
雷区设计: java.swing包中Jpanel容器创建对象:bombPanel,作为一个容器添加到继承了JFrame的Frame地雷omb继承JButton,变量方块地雷的坐标方块或地雷的状态等。
1、重要的成员变量
(1) BombRoundCount是bomb类属性 BombNum, BlockNum,rightBomb, restBomb, restBlock是int类型,分别负责记录游戏当前地雷数量、方块数、找到的地雷数、剩余的雷数、剩余的方块数。
(3) bombButton是bomb类型的数组,负责设置数组中的哪些方块是雷或不是雷。
2、方法
(1) startBomb()方法可根据参数提供的数据设置雷区的雷数,其中方块数固定。
(2) start_actionPerformed(ActionEvent e)是实现的ActionListener接口中的方法。当用户单击开始时,start_actionPerformed(ActionEvent e)方法负责执行有关算法,例如,当用鼠标左键单击方块上的按钮后,若用户定义雷数少于5,将弹出错误提示,若不小于5则执行游戏。
(3)CountRoundBomb()方法是一个计算周围雷数算法,当需要检测的单元格本身无地雷的情况下,统计周围的地雷个数,记录到BombRoundCount中以数字形式显示在单元格 isWin()方法用来判断用户是否扫雷成功,如果成功该方法负责让一个文本框弹出提示游戏胜利。所谓扫雷成功是指找到了全部的雷。
(6) isNull(Bomb ClickedButton)方法是用来判断周围雷数是否为turn(Bomb ClickedButton)方法中调用以
(7) turn(Bomb ClickedButton)方法是进行翻开单元格的动作actionPerformed(ActionEvent e),mouseClicked(MouseEvent e) Frame1_start_action,AdapterBomb_action,AdapterBomb_mouseAdapter都是对事件的捕获及处理其中有左键点击进行翻开动作或者还会弹出一个文本框提示右键点击进行地雷的标记还有界面开始的监听系统设计
用户可以自定义雷数;
用户可以按鼠标右键标记雷数并取消;
用户通过左击小方块
总体功能图
主要功能的概要设计:
总体流程图:
扫雷游戏界面的设计:整体布局使用BorderLayout和GridlayoutLayout是总体的雷区和下方的菜单栏布局使用Gridlayout是雷区进行网格布局使用界面采用了按钮面板文本框
雷区的设计:将地雷随机安放在小方格中,通过用户的鼠标点击,翻开小方格,处理它周围的信息并做出相应显示,点击过程中记录地雷剩余数量,不管扫雷游戏的输赢,又重新初始化游戏。
布雷
3、进行雷区标记的设计:用户单击右键进行地雷的标记对地雷位置的猜测
各个具体功能实现和简单算法:
扫雷游戏界面的实现:
首先定义三个容器,整体界面c和菜单栏MenuPanel、雷区bombPanel。
Frame{
JPanel MenuPanel=new JPanel();
JPanel bombPanel=new JPanel();
JPanel c;
}
然后是三个容器的布置
JbInit(){
c.setLayout(borderLayout1);
c.add(MenuPamel,BorderLayout.SOUTH);
c.add(bombPanel, java.awt.BorderLayout.CENTER);
}
最后是菜单栏
JbInit{
BombNum = 10;
text = new JTextField(10, 3);//
nowBomb = new JLabel(当前雷数 + : + BombNum);
setBomb = new JLabel(设置地雷数);
start.addActionListener(new Frame1_start_actionAdapter(this));
}
雷区和扫雷的实现:随机数的生成函数random在已经初始设空(NULL)的区域内布10个雷。
显示全部