Batlha Naval em Java

4 respostas
Daiene_Marques

Olá pessoal estou fazendo um jogo para um trabalho, mas estou com dúvida de como fazer esse programa repetir para completar o tabuleiro todo.
Esse é meu código:

package batalhanaval;

import java.io.BufferedReader;
import java.io.InputStreamReader;

/**
*

  • @author Daiene
    */
    public class BatalhaNavalApp {

    /**

    • @param args the command line arguments
      */

      public static String tabuleiro[][]= new String[8][8];//cria um tabuleiro 8x8//
      public static int posicao[][] = new int[8][8];//posicoes dos barcos no tabuleiro//

    public static void zeraPosicao(){
    
    for(int l=0;l<8;l++){//preenche as linhas com 0//
    
    for(int c=0;c<8;c++){//preenche as colunas com 0//
    
    posicao[l][c] = 0;
    
    }
    
    }
    
    }
    

    //funcao que determina a Posicao dos submarinos no tabuleiro//
    public static void posicaoDosSubmarinos(){

    //SUBMARINO 1//
     posicao[1][2] = 1;
    
    
     //SUBMARINO 2//
     posicao [1][0] = 1;
    
     //SUBMARINO 3//
     posicao [6][7] = 1;
    
     //SUBMARINO 4//
     posicao [4][6] = 1;
    
     //SUBMARINO 5//
     posicao [3][1] = 1;
    

    }

    //funcao que define a Posicao dos distroyers no tabuleiro//
    public static void posicaoDosDistroyers(){

    //DISTROYER 1//
     posicao [0][6] = 3;
     posicao [0][7] = 3;
    
     //DISTROYER 2//
     posicao [3][6] = 3;
     posicao [3][7] = 3;
    
     //DISTROYER 3//
     posicao [5][0] = 3;
     posicao [5][1] = 3;
    
     //DISTROYER 4//
     posicao [4][2] = 3;
     posicao [4][3] = 3;
    

    }

    //funcao que define a Posicao dos cruzadores no tabuleiro//
    public static void posicaoDosCruzadores(){

    //CRUZADOR 1//
     posicao [5][3] = 5;
     posicao [5][4] = 5;
     posicao [5][5] = 5;
    
     //CRUZADOR 2//
     posicao[1][5] = 5;
     posicao[1][6] = 5;
     posicao[1][7] = 5;
    
     //CRUZADOR 3//
     posicao [2][4] = 5;
     posicao [2][5] = 5;
     posicao [2][6] = 5;
    

    }

    //funcao que define a Posicao dos navios no tabuleiro//
    public static void posicaoDosNavios(){

    //NAVIO 1//
     posicao[0][0] = 7;
     posicao[0][1] = 7;
     posicao[0][2] = 7;
     posicao[0][3] = 7;
    
     //NAVIO 2//
     posicao[6][2] = 7;
     posicao[6][3] = 7;
     posicao[6][4] = 7;
     posicao[6][5] = 7;
    

    }

    //funcao que define a Posicao do Porta Aviao no tabuleiro//
    public static void posicaoDoPortaAviao(){

    //PORTA AVIAO//
     posicao[7][3] = 9;
     posicao[7][4] = 9;
     posicao[7][5] = 9;
     posicao[7][6] = 9;
     posicao[7][7] = 9;
    
    }
    
    /*
    
    public static void imprimeMatrizdePosicao(){
    
    String saida="";
    
    for(int l=0;l<8;l++){//preenche as linhas com elementos de 0 a 7//
    
    System.out.println("\n");
    
    for(int c=0;c<8;c++){//preenche as colunas com elementos de 0 a 7//
    
    System.out.println(posicao[l][c]);
    
    }
    
    }
    
    }*/
    
    public static int lerLinha(){
    
    BufferedReader entrada = new BufferedReader (new InputStreamReader(System.in));
    
    int Linha=0;
    
    try {
    
    System.out.println("Informe a linha ");
    
    Linha=Integer.parseInt(entrada.readLine());
    
    if(Linha >=0 && Linha <=7){
    
    return(Linha);
    
    }else{
    
    System.out.println(Linha invalida!!!);
    
    return(lerLinha());
    
    }
    
    } catch(Exception e){
    
    System.out.println(Linha invalida!!!);
    
    return(lerLinha());
    
    }
    
    }
    
    public static int lerColuna(){
    
    BufferedReader entrada = new BufferedReader (new InputStreamReader(System.in));
    
    int Coluna=0;
    
    //int acert=14;
    
    try {
    
    System.out.println("Informe a coluna ");
    
    Coluna=Integer.parseInt(entrada.readLine());
    
    if(Coluna >=0 && Coluna <=7){
    
    return(Coluna);
    
    }else{
    
    System.out.println(Coluna invalida!!!);
    
    return(lerColuna());
    
    }
    
    } catch(Exception e){
    
    System.out.println(Coluna invalida!!!);
    
    return(lerColuna());
    
    }
    
    }
    
     public static void inicilizaMatriz(){
            for(int l=0;l<8;l++){//preenche as linhas com elementos de 0 a 7//
                for(int c=0;c<8;c++){//preenche as colunas com elementos de 0 a 7//
                     tabuleiro[l][c]=" ";
                }
            }
    

    }

    public static void imprimeTabuleiro(){
           System.out.println("    0   1   2   3   4   5   6   7"); //numero da coluna
           System.out.println("  _________________________________");
           for(int l=0;l<8;l++){//preenche as linhas com elementos de 0 a 7//
                 System.out.print(l + " ");   //numero da linhas do lado do tabuleiro
                for(int c=0;c<8;c++){//preenche as colunas com elementos de 0 a 7//
                     System.out.print("| "+tabuleiro[l][c]+" ");
                }
                System.out.println("|");
                System.out.println("  _________________________________");
            }
    }
    
    public static void verificaPosicao(int col,int lin){
           int escolha = posicao[lin][col];
           System.out.println(escolha);
           if(tabuleiro[lin][col] == " "){//se vc ainda n escolheu essa posicao
               switch(escolha){
                  case 0:
                        System.out.println("voce atirou na agua, tente novamente");
                        tabuleiro[lin][col] = "X";
                        break;
                  case 1:
                        System.out.println("voce acertou um submarino");
                        tabuleiro[lin][col] = "1";
                        break;
                  case 3:
                        System.out.println("voce acertou um distroyer");
                        tabuleiro[lin][col] = "3";
                        break;
                  case 5:
                        System.out.println("voce acertou um cruzador");
                        tabuleiro[lin][col] = "5";
                        break;
                  case 7:
                        System.out.println("voce acertou um navio");
                        tabuleiro[lin][col] = "7";
                        break;
                  case 9:
                        System.out.println("voce acertou um porta-avioes");
                        tabuleiro[lin][col] = "90";
                        break;
                 }
           }
    }
    
    
    
    
    public static void main(String[] args) {
    int linha,coluna;
    
    //BufferedReader entrada;
    //entrada = new BufferedReader(new InputStreamReader(System.in));
    //METODOS QUE INICIALIZAM OS BARCOS//
    zeraPosicao();
    posicaoDosSubmarinos();
    posicaoDosDistroyers();
    posicaoDosCruzadores();
    posicaoDosNavios();
    posicaoDoPortaAviao();
    
    //METODOS QUE INICIALIZA AS MATRIZES//
    //imprimeMatrizdePosicao();
    inicilizaMatriz();
    imprimeTabuleiro();
    
    //METODOS QUE PEGAM A LINHA E COLUNA//
    linha = lerLinha();
    coluna = lerColuna();
    verificaPosicao(coluna,linha);
    imprimeTabuleiro();
    
     //System.out.println(linha + " " + coluna);
    
    }
    

}

Também estamos com dúvidas na interface do meu jogo… Se aguém puder me ajudar… Agradeço…

4 Respostas

pedroroxd

Bem vinda ao fórum!
Antes de postar seu código dê uma lida em: http://www.guj.com.br/posts/list/50115.java
Assim você aprende a usar a tag [ code ], que dexa seu código mais visual, porque ler código sem essa formatação é um saco.

Ex.:

String k = "Bem vinda ao Guj!";
Daiene_Marques

Foi mal, mas é que eu nunca usei o guj é minha primeira vez e vc sabe como é né ?!? vai fazendo tudo sem ler…Espero que vcs possam me ajudar esse trabalho é muito importante e meu grupo esta com muitas dúvidas somos todos iniciantes em java!!!
aí está o código de novo… será que vcs podem me ajudar a dar continuidade??? Desde ja agradeço a todos…

:wink:

package batalhanaval; 

import java.io.BufferedReader; 
import java.io.InputStreamReader; 

/** 
* 
* @author Daiene 
*/ 
public class BatalhaNavalApp { 

/** 
* @param args the command line arguments 
*/ 


public static String tabuleiro[][]= new String[8][8];//cria um tabuleiro 8x8// 
public static int posicao[][] = new int[8][8];//posicoes dos barcos no tabuleiro// 



public static void zeraPosicao(){ 
for(int l=0;l<8;l++){//preenche as linhas com 0// 
for(int c=0;c<8;c++){//preenche as colunas com 0// 
posicao[l][c] = 0; 
} 
} 
} 



//funcao que determina a Posicao dos submarinos no tabuleiro// 
public static void posicaoDosSubmarinos(){ 

//SUBMARINO 1// 
posicao[1][2] = 1; 


//SUBMARINO 2// 
posicao [1][0] = 1; 

//SUBMARINO 3// 
posicao [6][7] = 1; 

//SUBMARINO 4// 
posicao [4][6] = 1; 

//SUBMARINO 5// 
posicao [3][1] = 1; 
} 

//funcao que define a Posicao dos distroyers no tabuleiro// 
public static void posicaoDosDistroyers(){ 

//DISTROYER 1// 
posicao [0][6] = 3; 
posicao [0][7] = 3; 

//DISTROYER 2// 
posicao [3][6] = 3; 
posicao [3][7] = 3; 

//DISTROYER 3// 
posicao [5][0] = 3; 
posicao [5][1] = 3; 

//DISTROYER 4// 
posicao [4][2] = 3; 
posicao [4][3] = 3; 
} 

//funcao que define a Posicao dos cruzadores no tabuleiro// 
public static void posicaoDosCruzadores(){ 

//CRUZADOR 1// 
posicao [5][3] = 5; 
posicao [5][4] = 5; 
posicao [5][5] = 5; 

//CRUZADOR 2// 
posicao[1][5] = 5; 
posicao[1][6] = 5; 
posicao[1][7] = 5; 

//CRUZADOR 3// 
posicao [2][4] = 5; 
posicao [2][5] = 5; 
posicao [2][6] = 5; 
} 

//funcao que define a Posicao dos navios no tabuleiro// 
public static void posicaoDosNavios(){ 

//NAVIO 1// 
posicao[0][0] = 7; 
posicao[0][1] = 7; 
posicao[0][2] = 7; 
posicao[0][3] = 7; 

//NAVIO 2// 
posicao[6][2] = 7; 
posicao[6][3] = 7; 
posicao[6][4] = 7; 
posicao[6][5] = 7; 
}
B

Acho que o que falta mesmo é ele continuar a partida.

while (nãoAcabouOJogo()) {
  //METODOS QUE PEGAM A LINHA E COLUNA//
  linha = lerLinha();
  coluna = lerColuna();
  verificaPosicao(coluna,linha);
  imprimeTabuleiro();
}

Uma coisa que não vi(li muito por cima) é, como você verifica que ele já jogou numa casa? Seria bom colocar um número nessa casa já jogada, talvez um -1. Isso também será importante para marcar o fim do jogo, quando não existir nenhuma casa com 1, 3, 5, 7 e 9.

É o básico por enquanto.

S

Oi minha linda.

Pelo que percebi, vc está querendo que esse jogo rode em uma rede?. Bem para completar esta faltando a classe com o método main para observamos a continuidade do código. Se e a minha pergunta estiver errada me corrija ok. Fico no aguardo do restante do código.

Abraço

Criado 3 de outubro de 2009
Ultima resposta 6 de out. de 2009
Respostas 4
Participantes 4