Dúvida - Como fazer um tabuleiro para campo minado

Galera, estou querendo fazer um jogo campo minado.

Como todos sabem, ao clicar em uma célula que não tenha bombas ao redor, ou seja: valor 0, as células ao seu redor serão mostradas, e se forem 0, o processo será repetido novamente até encontrar um número que indique uma bomba.

O que eu pensei em fazer, é um método que verifique as casas em roda, e qnd achar uma tambem com 0, novamente chame o método, fazendo isso em cadeia até não haver mais.

Minha idéia foi criar uma String de botões JButton, porém não sei se existe como fazer isso.

Alguem tem idéias ou sujestões?
Muito Obrigado pela atenção ;D

Opa!

Nao sei se é essa a sua duvida, mas para gerar os botoes poderia ser utilizado como no exemplo a seguir:

    int linha = 5;
    int coluna = 5;
    int minas = 5;
    int[] posMinas = new int[minas];
    List<JButton> botoes = new ArrayList<JButton>();

    public void gerarBotoes() {

        java.awt.GridBagConstraints gridBagConstraints;

        for (int i = 0; i < linha; i++) {
            for (int j = 0; j < coluna; j++) {
                JButton aux = new JButton();
                aux.setText(" ");
                aux.addActionListener(this); 
                gridBagConstraints = new java.awt.GridBagConstraints();
                gridBagConstraints.gridx = i;
                gridBagConstraints.gridy = j;
                jPanel2.add(aux, gridBagConstraints);
                botoes.add(aux);
            }
        }
    }

Aqui um exemplo para popular as minas:

    public void popularMinas() {
        for (int i = 0; i < minas; i++) {
            int num = new Random().nextInt((linha * coluna) - 1);
            posMinas[i] = num;
            botoes.get(num).setText("*");
        }
    }

Uma ideia é criar uma classe onde além do botao também teria as posicoes relativas, se ele está com mina ou nao, etc.

Criar um método que entao pegue quem o usuario clicou, podendo ser pego com o ActionEvent.getSource, como no exemplo a seguir:

    public void actionPerformed(ActionEvent e) {
        JButton aux = (JButton)e.getSource();
        //JOptionPane.showMessageDialog(null, aux.getText());
        analisa(aux);
    }

Depois poderia ser feito a analise dos campos ao redor, caso já nao seja uma mina e o usuario perdeu.

Nao cheguei a implementar a análise, acredito que essa seria a maior dúvida, mas tenho uma ideia que poderia ser pego a partir dos indices da linha e coluna, verificar ao redor, sendo que:

  • se nao tiver bomba em nenhum redor, ele abre o quadrado;
  • se tiver bomba ele aumenta um contador para mostrar no botao;
  • se proximo a ele estiver um botao sem bomba este tambem tem que chamar o metodo analisa(), para ser verificado se nao se encaixa nas regras acima.

Espero ter ajudado, desculpa qualquer erro, problema com a resposta, é a primeira vez que posto :smiley: