Lógica campo minado

Boa tarde meus caros, sou iniciante em programação e estou fazendo um curso de Java pela internet, e eu terminei um projetinho de campo minado usando a biblioteca Swing e padrão observer. No entanto estou tendo um problema na lógica do sorteio das minas, quando eu rodo a primeira vez o jogo ele sorteia normalmente, mas quando eu venço a partida ou perco e o jogo reinicia, as minas não estão sendo sorteadas de novo, de modo que ao clicar em qualquer botão o jogo dispara a vitória, pois não há minas no tabuleiro. Sou leigo ainda, é a primeira postagem que faço aqui então não sei como vocês fazem pra expor os códigos, o que eu fiz foi commitar ele no meu repositório do GitHub.

Se alguém tiver a bondade de me explicar ou expor onde estou errando agradeço!!

1 curtida

Em uma olhada rápida, seu método sortearMinas() parece ser chamado em um único ponto, que é no construtor da classe Tabuleiro. Como esse construtor só é chamado uma única vez (assim que a aplicação inicia), então o sorteio das minas não ocorre novamente. Você pode precisar separar essa chamada a sortearMinas do construtor (possivelmente gerarCampos() e associarVizinhos() também).

Seria interessante também você manter o estado do jogo (iniciado, finalizado) separado da condição de verificação de vitória/derrota. Assim, se o jogo está no estado finalizado, você não chama a verificação de vitória antes de realizar o sorteio novamente.

Abraço.

1 curtida

Muito obrigado, eu invoquei o método sortearMinas() após o reiniciar() na classe PainelTabuleiro e aparentemente está funcionando perfeitamente!