Estou fazendo um campo minado em modo texto, porém preciso verificar se qdo o jogador joga, naum acerta em uma bomba, abrindo todas as casas que naum possuem bombas(vizinhas) isso sem estourar o limite das bombas. O código, eu fiz para verificar. Porém naum sei como chamar esse método e trocar o status da matriz, trocando a imagem das vizinhas e continuar jogando.
Estou desesperada pois naum sei como chamar esse método.
Será que alguém pode me dar uma ajudinha, o código é esse:
public static void main(String[] args) //método main (principal)
{
// comandos System.out.println para exibir as instruções de jogo
System.out.println("Instruções:");
System.out.println("Após cada tiro será mostrado o mapa do jogo indicando:");
System.out.println("-> 'b' caso acerte uma bomba;");
System.out.println("-> 'o' caso acerte na água;");
System.out.println("O Jogo acaba quando você acertar uma bomba, ou ao ividenciar todas as bombas ");
System.out.println("Boa Sorte!");
System.out.println("");
colocaBombas();
int[][] tiro = new int[TAM][TAM];
long tempo = new Date().getTime();
int acertos = 0;
int bombas = 0;
int erros = 0;
int jogadas = 0;
do //laço do-while que repete enquanto não acontecer nenhuma condição para fim de jogo
{
mostraMatriz(tiro); //chama o método 'mostraMatriz', passando a variável 'tiro' como argumento
// para que o jogo mostre o mapa com os tiros recebidos.
// comandos System.out.print para mostrar o número efetivo de jogadas, erros e acertos
System.out.print("Jogadas: ");
System.out.print(jogadas);
System.out.print(" Acertos: ");
System.out.println(jogadas);
// System.out.print(" Acertos: ");
// System.out.println(acertos);
// chamada do método 'leCoordenada' para receber os valores corretos do tiro efetuado
li = leCoordenada("Digite a linha: ");
c = leCoordenada("Digite a coluna: ");
System.out.println("");
if ((minas[li][c]!= 0) && (minas[li][c]!= 1) && (minas[li][c]!=5))
{ //if para acertos em embarcação
tiro[li][c] = minas[li][c]; //o valor da matriz na posição da coordenada onde foi dado o tiro é alterado para mostrar o acerto
acertos++; //contabiliza o número de acertos incrementando em +1
System.out.println("Parabéns, você acertou!");
}
else //else para erros de embarcação
{
erros++; //contabiliza o número de erros incrementando em +1
if (minas[li][c]==5)
{ //if para verificar se acertou uma bomba
tiro[li][c] = 5; //o valor da matriz na posição da coordenada é alterado para mostrar a bomba acertada
bombas++; //contabiliza o número de bombas incrementando em +1
System.out.println("Você acertou uma bomba!");
}
else
{ //else para tirosna água
tiro[li][c] = 1; //o valor da matriz na posição do tiro é alterado para mostrar o naum acerto em uma bomba
System.out.println("Parabéns, você não acertou uma bomba!");
// verificaPosicao(i, j);
}
}
jogadas++; //contabiliza o número de jogadas incrementando em +1
}while (bombas < 1); //encerra laço do-while se uma das condições for verdadeira
if (bombas == 1) //se o número total de bombas acertadas for igual à 1
System.out.println("Você perdeu! Acertou uma bomba! Fim de jogo!");
mostraMatriz(tiro);
// comandos System.out.println para imprimir as estatísticas do jogo
System.out.println("");
System.out.println("Estatísticas:");
System.out.println("Jogadas: " + jogadas);
System.out.println("Acertos " + (jogadas - bombas));
System.out.println("Bombas explodidas: " + bombas);
System.out.println("Tempo do jogo " + ((new Date().getTime()-tempo)/1000) + " segundos");
}
static void verificaPosicao(int i, int j)
{
int contador = 0;
for (int k = i-1; k <= i+1; k++)
{
for (int l = j-1; l <= j+1; l++)
{
if ((k >= 0) && (k < li+1) && (l >= 0) && (l < c+1) && (minas[k][l]== -2))
{
contador++;
}
}
}
minas[i][j] = contador;
if (contador == 0)
{
for (int k = i-1; k <= i+1; k++)
{
for (int l = j-1; l <= j+1; l++)
{
if ((k >= 0) && (k < li+1) && (l >= 0) && (l < c+1) && (minas[k][l] != 0))
{
verificaPosicao(k,l);
}
}
}
}
}
}