热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java版的扫雷游戏源码

JButton[][]buttons=newJButton[ROW][COL];int[][]counts=newint[ROW][COL];finali

JButton[][] buttOns= new JButton[ROW][COL];
int[][] counts = new int[ROW][COL];
final int LCODE = 11; //雷的编码
Container cOntainer= new Container();
public Saolei() {
init();
private void init() {
JButton restBtn = new JButton("重来");
restBtn.setOpaque(true);
restBtn.setBackground(Color.PINK);
restBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for(int i=0;i i++) {
for(int j=0;j j++) {
buttons[i][j].setText("");
buttons[i][j].setEnabled(true);
buttons[i][j].setBackground(Color.YELLOW);
counts[i][j] = 0;
}
}
mailei();
jslsl();
}
setLayout(new BorderLayout());
add(restBtn,BorderLayout.NORTH);
add(container,BorderLayout.CENTER);
container.setLayout(new GridLayout(ROW,COL));
for(int i=0;i i++) {
for(int j=0;j j++) {
JButton button = new JButton();
button.setMargin(new Insets(0, 0, 0, 0));
button.setBackground(Color.YELLOW);
button.setOpaque(true);
buttons[i][j] = button;
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JButton button = (JButton) e.getSource();
if(button.equals(restBtn)) {
}else {
int count = 0;
for(int i=0;i i++) {
for(int j=0;j j++) {
if(button.equals(buttons[i][j])) {
count = counts[i][j];
//踩到雷了
if(count == LEI) {
clcl();
}else {
openCell(i,j);
checkWin();
}
return;
}
}
}
}
private void checkWin() {
for(int i=0;i i++) {
for(int j=0;j j++) {
//说明还没有赢
if(buttons[i][j].isEnabled() == true counts[i][j] != LEI) {
return;
}
}
JOptionPane.showMessageDialog(container, "恭喜您赢了...");
private void openCell(int i,int j ) {
//如果格子已经打开,直接返回
if(buttons[i][j].isEnabled() == false) {
return ;
buttons[i][j].setText(counts[i][j]+"");
buttons[i][j].setEnabled(false);
buttons[i][j].setBackground(Color.CYAN);
if(counts[i][j] == 0) {
//左上角
if(i 0 j 0 counts[i-1][j-1] != LEI) {
openCell(i-1, j-1);
if(i 0 j 0 counts[i-1][j] != LEI) {
openCell(i-1, j);
if(i 0 j 19 counts[i-1][j+1] != LEI) {
openCell(i-1, j+1);
if(i 0 j 0 counts[i][j-1] != LEI) {
openCell(i, j-1);
if(i 0 j 19 counts[i][j+1] != LEI) {
openCell(i, j+1);
if(i 19 j 0 counts[i+1][j-1] != LEI) {
openCell(i+1, j-1);
if(i 19 j 0 counts[i+1][j] != LEI) {
openCell(i+1, j);
if(i 19 j 19 counts[i+1][j+1] != LEI) {
openCell(i+1, j+1);
}
}else {
buttons[i][j].setText(counts[i][j]+"");
}
});
container.add(button);
}
}
mailei();
//计算周边的雷的数量
jslsl();
setVisible(true);
setTitle("扫雷游戏");
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(600,700);
private void jslsl() {
for(int i=0;i i++) {
for(int j=0;j j++) {
int count = 0;
if(counts[i][j] == LEI) {
continue;
//左上角
if(i 0 j 0 counts[i-1][j-1] == LEI) {
count++;
if(i 0 j 0 counts[i-1][j] == LEI) {
count++;
if(i 0 j 19 counts[i-1][j+1] == LEI) {
count++;
if(i 0 j 0 counts[i][j-1] == LEI) {
count++;
if(i 0 j 19 counts[i][j+1] == LEI) {
count++;
if(i 19 j 0 counts[i+1][j-1] == LEI) {
count++;
if(i 19 j 0 counts[i+1][j] == LEI) {
count++;
if(i 19 j 19 counts[i+1][j+1] == LEI) {
count++;
counts[i][j] = count;
// buttons[i][j].setText(counts[i][j]+" ");
}
}
private void clcl() {
for(int i=0;i i++) {
for(int j=0;j j++) {
int c = counts[i][j];
if(c == LEI) {
buttons[i][j].setText("X");
buttons[i][j].setBackground(Color.RED);
buttons[i][j].setEnabled(false);
}else {
buttons[i][j].setText(c+"");
buttons[i][j].setEnabled(false);
}
}
}
private void mailei() {
Random random = new Random();
int randRow,randCol;
for(int i=0;i i++) {
randRow = random.nextInt(ROW);
randCol = random.nextInt(COL);
if(counts[randRow][randCol] == LEI) {
i--;
}else {
counts[randRow][randCol] = LEI;
// buttons[randRow][randCol].setText(LEI+"");
}
}
public static void main(String[] args) {
new Saolei();
}



以上代码纯属练习用,没有经过任何的封装,有兴趣的小伙伴可以自行封装一下哦。


   



推荐阅读
author-avatar
手机用户2602917255
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有