Campo Minado

2 respostas
A

Criei um campo minado em java modo texto porem ao usar o valor 1 para linha o programa para…
este trabalho é para hoje denoite as 7:30 :smiley:
se puderem ajudar agradeço, se nao der… tudo bem :B

public class CampoMinadov2
{
  public static int verificaTiro(int aux[][], int mat[][],int l , int c)
  {                 
    while(l>6||c>6||l<0||c<0) //Numeros Solicitados Novamente Caso Sejam invalidos
    {
      System.out.println("numeros invalidos");
      l=Entrada.leiaInt("linha do tiro");
      c=Entrada.leiaInt("coluna do tiro");
      System.out.println("-----------------------");
    }
    int end=1;
    int cont=0;
    if(mat[l][c]==9)//se for bomba, jogo acaba
    {
      System.out.println("-----------------------");
      System.out.println("BOOOOOOOOOOOOOOOOOOOOOOM");
      System.out.println("Você acertou uma Mina");
      System.out.println("-----------------------");
      end=1;
      System.out.println("Aqui estao as posições das bombas");
      System.out.println("-----------------------");
      imprimeMatriz(mat);//Mostra todas as posições no final do jogo
    }else{
      if(l==7&&c==1)//Analisa canto esquerdo inferior
      {
        if(mat[l-1][c]==9)
        {
          cont++;
        }
        if(mat[l][c+1]==9)
        {
          cont++;
        }
        if(mat[l-1][c+1]==9)
        {
          cont++;
        }
        end=0;
      }else{
        if(l==1&&c==1)   //Analisa canto esquerdo superior
        {
          if(mat[l+1][c]==9)
          {
            cont++;
          }
          if(mat[l][c+1]==9)
          {
            cont++;
          }
          if(mat[l+1][c+1]==9)
          {
            cont++;
          }
          end=0;
        }else{
          if(l==1&&c==7)//Analisa canto direito Superior
          {
            if(mat[l+1][c]==9)
            {
              cont++;
            }
            if(mat[l][c-1]==9)
            {
              cont++;
            }
            if(mat[l+1][c-1]==9)
            {
              cont++;
            }
            end=0;
          }else{
            if(l==7&&c==7)//Analisa canto direito inferior
            {
              if(mat[l-1][c]==9)
              {
                cont++;
              }
              if(mat[l][c-1]==9)
              {
                cont++;
              }
              if(mat[l-1][c-1]==9)
              {
                cont++;
              }
              end=0;
            }else{
              if(l<7&&l>1&&c<7&&c>1) //verifica os campos do meio
              {
                if(mat[l-1][c]==9)
                {
                  cont++;
                }
                if(mat[l+1][c]==9)
                {
                  cont++;
                }
                if(mat[l][c-1]==9)
                {
                  cont++;
                }
                if(mat[l][c+1]==9)
                {
                  cont++;
                }
                if(mat[l-1][c-1]==9)
                {
                  cont++;
                }
                if(mat[l+1][c-1]==9)
                {
                  cont++;
                }
                if(mat[l+1][c+1]==9)
                {
                  cont++;
                }
                if(mat[l-1][c+1]==9)
                {
                  cont++;
                }
                end=0;
              }else{
                if(c==1&&l<7&&l>1)//Analisa lado esquerdo
                {
                  if(mat[l-1][c]==9)
                  {
                    cont++;
                  }
                  if(mat[l+1][c]==9)
                  {
                    cont++;
                  }
                  if(mat[l][c+1]==9)
                  {
                    cont++;
                  }
                  if(mat[l+1][c+1]==9)
                  {
                    cont++;
                  }
                  if(mat[l-1][c+1]==9)
                  {
                    cont++;
                  }
                  end=0;
                }else{
                  if(c==7&&l<7&&l>1)//Analisa lado Direito
                  {
                    if(mat[l-1][c]==9)
                    {
                      cont++;
                    }
                    if(mat[l+1][c]==9)
                    {
                      cont++;
                    }
                    if(mat[l][c-1]==9)
                    {
                      cont++;
                    }
                    if(mat[l+1][c-1]==9)
                    {
                      cont++;
                    }
                    if(mat[l-1][c-1]==9)
                    {
                      cont++;
                    }
                    end=0;
                  }else{
                    if(l==1&&c<7&&c>1)// Analisa em cima
                    {
                      if(mat[l][c-1]==9)
                      {
                        cont++;
                      }
                      if(mat[l+1][c-1]==9)
                      {
                        cont++;
                      }
                      if(mat[l+1][c]==9)
                      {
                        cont++;
                      }
                      if(mat[l+1][c+1]==9)
                      {
                        cont++;
                      }
                      if(mat[l][c+1]==9)
                      {
                        cont++;
                      }
                      end=0;
                    }else{
                      if(l==7&&c<7&&c>1)// analisa em baixo
                      {
                        if(mat[l][c-1]==9)
                        {
                          cont++;
                        }
                        if(mat[l-1][c-1]==9)
                        {
                          cont++;
                        }
                        if(mat[l-1][c]==9)
                        {
                          cont++;
                        }
                        if(mat[l-1][c+1]==9)
                        {
                          cont++;
                        }
                        if(mat[l][c+1]==9)
                        {
                          cont++;
                        }
                        end=0;
                      }
                    }
                  }
                }
              }
            }
          }
        }      
      }
    }
    mat[l][c]=cont; //se o campo nao for bomba imprime o numero de bombas ao redor
    aux[l][c]=mat[l][c];
    //imprimeMatriz(aux);
    return end;
  }
  
  public static void imprimeMatriz(int mat[][])
  {
    for(int i=0;i<7;i++)
    {
      for(int j=0;j<7;j++)
      {
        System.out.print(mat[i][j]+" ");
      }
      System.out.println(" ");
    }
    System.out.println("");
    System.out.println("-----------------------");
  }    
  public static void main(String[]args)
  {
    System.out.println("|--------------------------------------|");
    System.out.println("|             Campo Minado             |");
    System.out.println("|--------------------------------------|");
    String nome=Entrada.leiaString("Qual é o seu nome?");
    System.out.println("Vamos começar o jogo "+nome);
    System.out.println("-----------------------");        
    int end=0;
    int aux[][]=new int[7][7]; //Cria uma matriz auxiliar
    int mat[][]=new int[7][7]; //Cria a Matriz do campo minado
    for(int i=0;i<7;i++)
    {
      for(int j=0;j<7;j++)
      {
        mat[i][j]=(int)(Math.random()*5);//sorteia numeros de 0 a 4
      }
    }
    for(int i=0;i<7;i++)
    {
      for(int j=0;j<7;j++)
      {
        if(mat[i][j]<2)//onde houver numeros abaixo de 2 na matriz
        {              //essa posição recebera o valor 9 que representará bomba
          mat[i][j]=9;
        }else{
          mat[i][j]=0;//caso for maior que 3 recebe numero 0 que equivale a campo vaziu
        }
      }
    }
    int tiro=0;
    while(end==0)
    {
      System.out.println("-----------------------");
      System.out.println("De um tiro, escolha a linha e a coluna(1~7)");
      System.out.println("-----------------------");
      imprimeMatriz(aux);
      int l=Entrada.leiaInt("linha do tiro");
      int c=Entrada.leiaInt("coluna do tiro");
      tiro++;
      System.out.println("-----------------------");
      l=l-1;
      c=c-1;
      end=verificaTiro(aux, mat, l, c); 
    }
    if(end==1);
    {
      System.out.println("-----------------------");
      System.out.println(nome+", você deu: "+tiro+" tiro(s)");
    }
  }
}

2 Respostas

G

pq vc ão tira esse monte de ifs ai e usa um for?

como falei em outro post, fica possivel ler o código

F

Um array sempre começa na posição 0. Portanto, se vc tem uma matriz[7][7],
as posições vão de 0 a 6.

Todas as suas comparações começam no 1 e vão até o 7.

Logo, troque 1 por 0 e 7 por 6.

Nossa, ficou confuso. ^^

PS: Vê se dá uma melhorada nessa lógica aí, hehe.

Criado 28 de junho de 2012
Ultima resposta 29 de jun. de 2012
Respostas 2
Participantes 3