用java怎么写扫雷程序首先要写一个UI , 也就是操作界面,使用java.swing.*内的东西就可以搞定;
其次写一个hander,也就是具体的按钮响应 , UI的初始化(哪里有雷),怎么触发雷和其他的;
一般来说简单的扫雷模型就好了 , 如果需要更有意思点,可以写一些数据库的操作内容的tool类具体的就是处理历史操作记录,场均数据或多人竞技的特点 。
如果你是说你没有设计思路,我可以给你个提示:递归算法是触发扫雷的方法,初始化用随机数来做 。
JAVA 扫雷的一段代码求解释int BombNum, BlockNum; // 当前雷数,当前方块数
int rightBomb, restBomb, restBlock; // 找到的地雷数,剩余雷数,剩余方块数
JButton start = new JButton(" 开始 ");
JPanel MenuPamel = new JPanel(); //新建一个区域,看名字是放菜单.但是打错字了.
JPanel bombPanel = new JPanel();//新建一个区域,雷区,由于雷是按钮,这里面应该都是按钮(JButton).
Bomb[][] bombButton;2维组数,放地雷.
class Bomb extends JButton {
int num_x, num_y; // 第几号方块
int BombRoundCount; // 周围雷数
boolean isBomb; // 是否为雷
boolean isClicked; // 是否被点击
int BombFlag; // 探雷标记
boolean isRight; // 是否点击右键
public Bomb(int x, int y) {
num_x = x;//雷的位置 x,不解释
num_y = y;//雷的位置 y,不解释.获得是参数的值,所new Bomb的时候传入雷的位置,套嵌2个for循环.
BombFlag = 0;//是不是被插旗了
BombRoundCount = 9;//环绕数
isBomb = false;//是雷
isClicked = false;//被点
isRight = false;//是真的.( 以上都很好理解,直译^_^)
}
}
/* 计算方块周围雷数 */
public void CountRoundBomb() {
for (int i = 0; i(int) Math.sqrt(BlockNum); i++) {//开方 障碍数
for (int j = 0; j(int) Math.sqrt(BlockNum); j++) { //同上,我判断,设计的雷区是正方形,
//这里是找完所有的坐标.
int count = 0;
// 当需要检测的单元格本身无地雷的情况下,统计周围的地雷个数
if (bombButton[i][j].isBomb != true) {//如果不是雷
for (int x = i - 1; xi + 2; x++) {//从左边1个,到右边1个,一共3个
for (int y = j - 1; yj + 2; y++) {//我不知道,java y坐标是上还是下,总之
//邻近的上中下.(这里会多找一个自己)
if ( (x = 0)(y = 0)
(x( (int) Math.sqrt(BlockNum)))
(y( (int) Math.sqrt(BlockNum)))) {//因边前面 x=i-1,所以排除超出边界
//的情况
if (bombButton[x][y].isBomb == true) {//如果是雷;
count++;//加一个
}
}
}
}
bombButton[i][j].BombRoundCount = count;//设置该Bomb环绕数的值
}
}
}
}
总之就是,建个一个Bomb类.别外有一个方法统计那些不是雷的地方,的周围有几颗雷,到时候点开,显示出来.
java 扫雷源代码import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.Timer;
public class ScanLei1 extends JFrameimplements ActionListener{
private static final long serialVersionUID = 1L;
private Container contentPane;
private JButton btn;
private JButton[] btns;
private JLabel b1;
private JLabel b2;
private JLabel b3;
推荐阅读
- 快手上直播提醒怎么设定,快手设置直播提醒
- 酷k下载,酷K下载
- java银行交易接口代码,java银行atm
- 手机淘宝怎么打开淘宝客服,手机淘宝怎么打开淘宝客服聊天
- 包含vb.net没vb6的词条
- 相机水下拍摄要用什么,水下拍摄的相机哪个牌子的好?
- 孩子用手机消费怎么教育,小孩玩手机消费了怎么办
- 电脑怎么查硬盘类型分区,怎么查看电脑硬盘分区格式
- vb.net获取函数名 vb获取excel单元格值