java实现扫雷游戏(附源码)

实现一个扫雷小游戏需要一些编程知识和图形界面库,Java中可以使用Swing来创建图形界面。以下是一个简单的扫雷小游戏的Java代码示例,该示例使用Swing库:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MineSweeperGame {
    public static void main(String[] args) {
        JFrame frame = new JFrame("扫雷游戏");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);

        JPanel panel = new JPanel(new GridLayout(10, 10));
        JButton[][] buttons = new JButton[10][10];

        // 创建并初始化扫雷地图
        boolean[][] mines = generateMines(10, 10, 10);

        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                buttons[i][j] = new JButton();
                int finalI = i;
                int finalJ = j;
                buttons[i][j].addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        if (mines[finalI][finalJ]) {
                            buttons[finalI][finalJ].setText("X");
                        } else {
                            int count = countAdjacentMines(mines, finalI, finalJ);
                            buttons[finalI][finalJ].setText(count > 0 ? String.valueOf(count) : "");
                        }
                        buttons[finalI][finalJ].setEnabled(false);
                    }
                });
                panel.add(buttons[i][j]);
            }
        }

        frame.add(panel);
        frame.setVisible(true);
    }

    // 生成扫雷地图,其中minesCount是地雷数量
    private static boolean[][] generateMines(int rows, int cols, int minesCount) {
        boolean[][] mines = new boolean[rows][cols];
        int count = 0;
        while (count < minesCount) {
            int x = (int) (Math.random() * rows);
            int y = (int) (Math.random() * cols);
            if (!mines[x][y]) {
                mines[x][y] = true;
                count++;
            }
        }
        return mines;
    }

    // 计算某个格子周围的地雷数量
    private static int countAdjacentMines(boolean[][] mines, int x, int y) {
        int count = 0;
        for (int i = -1; i <= 1; i++) {
            for (int j = -1; j <= 1; j++) {
                int newX = x + i;
                int newY = y + j;
                if (newX >= 0 && newX < mines.length && newY >= 0 && newY < mines[0].length) {
                    if (mines[newX][newY]) {
                        count++;
                    }
                }
            }
        }
        return count;
    }
}

这个示例创建了一个简单的10x10的扫雷游戏界面,当点击方块时,会根据周围的地雷数量显示数字或地雷标志。你可以根据需要扩展该示例,添加更多功能和改进用户体验。

你可能感兴趣的:(游戏程序,java)