Problema com jogo

Gente to precisando de ajuda : eu to tendo que fazer o jogo batalha naval em java e nao to conseguindo

ta ai o codigo pra quem quiser da uma olhada.

[code]import java.io.;
import java.util.
;
class batalhanaval
{
public static void main(String args[])
{
try
{
int i=0,j=0,max=8,min=8,coluna=0,linha=0;
double tabuleiro[][] = new double[max][min];
double posicao[][] = new double[max][min];
//int escolha = posicao[i][j]; //{“a”,“b”,“c”,“d”,“e”,“f”,“g”,“h”,“i”,“j”,“l”,“m”,“n”,“o”,“p”};
//Random ramdom = new Random(4);
for(i=0;i<tabuleiro.length;i++){
for(j=0;j<tabuleiro.length;j++){
posicao[i][j] = 0;
}
}

    for(i=0;i<tabuleiro.length;i++){
          for(j=0;j<tabuleiro.length;j++){
             	//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;
               
               
             	//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;
                
                //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;
                
        		//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;
	 	  		
	 	  		//PORTA AVIAO//
	 	  		posicao[7][3] = 9;
			 	posicao[7][4] = 9;
	 	  		posicao[7][5] = 9;
	 	  		posicao[7][6] = 9;
	 	  		posicao[7][7] = 9;
	 	  		
	 	  		tabuleiro[i][j] = posicao[i][j];
          }
    }
     
        Scanner tec = new Scanner(System.in);
        
              System.out.print("Digite a linha: ");
              if(linha >=0 && linha <=7){
                 linha = tec.nextInt(); //0 + ramdom.nextInt(10);
                }else{
                    System.out.print("Linha Invalida");
                }
                
             System.out.print("Digite a Coluna: ");
             if(coluna >= 0 && coluna <= 7){
                 coluna = tec.nextInt();
                }else{
                    System.out.print("Coluna Invalida");
                }
    
             //if(tabuleiro[i][j] == " "){
            for(i=0;i<tabuleiro.length;i++){
                for(j=0;j<tabuleiro.length;j++){
                 posicao[i][j] = linha && coluna;
                }
            }
                 switch(linha && coluna == posicao[i][j]){
                     case 0:
                       System.out.println("voce atirou na agua, tente novamente");
                       tabuleiro[i][j] = "X";
                       
                 case 1:
                       System.out.println("voce acertou um submarino");
                       tabuleiro[i][j] = "1";
                       
                 case 3:
                       System.out.println("voce acertou um distroyer");
                       tabuleiro[i][j] = "3";
                       
                 case 5:
                       System.out.println("voce acertou um cruzador");
                       tabuleiro[i][j] = "5";
                       
                 case 7:
                       System.out.println("voce acertou um navio");
                       tabuleiro[i][j] = "7";
                       
                 case 9:
                       System.out.println("voce acertou um porta-avioes");
                       tabuleiro[i][j] = "9";
                       
                     } 
                //}   
                
    for(i=0;i<tabuleiro.length;i++){
        for(j=0;j<tabuleiro[0].length;j++)
            System.out.print(tabuleiro[i][j]+" ");
            System.out.println();
    }
    
    }
    catch(Exception erro)
    {
        System.exit(0);
    }
}

}[/code]

valew

Onde esta apontando erro?

E uma coisinha o nome da sua Classe deve ser em maiusculo

BatalhaNaval

não esqueça q JAVA tem case SenSiTivE

o erro ehh na linha 101

operator && cannot be applied to int , int

mais assim como eu vou fazer pra posicao reconhecer a linha e coluna pra fazer o switch case

Realmente, posicao[i][j] = linha && coluna;não existe… esse operadpr && é pra ser usado em um if, while, etc… o q vc ta querendo fazer com esse comando ai?

tipo assim se a linha e coluna estiverem certas ,

[code] System.out.print("Digite a linha: ");
if(linha >=0 && linha <=7){
linha = tec.nextInt(); //0 + ramdom.nextInt(10);
}else{
System.out.print(“Linha Invalida”);
}

             System.out.print("Digite a Coluna: ");  
             if(coluna >= 0 && coluna <= 7){  
                 coluna = tec.nextInt();  
                }else{  
                    System.out.print("Coluna Invalida");  
                }  [/code]

depois disso entende???

a matriz posiçao pegara as duas variaveis e vai verificar se o cara acertou algum barco no jogo

pra depois mostrar:

[code]switch(linha && coluna == posicao[i][j]){
case 0:
System.out.println(“voce atirou na agua, tente novamente”);
tabuleiro[i][j] = “X”;

                 case 1:  
                       System.out.println("voce acertou um submarino");  
                       tabuleiro[i][j] = "1";  
                         
                 case 3:  
                       System.out.println("voce acertou um distroyer");  
                       tabuleiro[i][j] = "3";  
                         
                 case 5:  
                       System.out.println("voce acertou um cruzador");  
                       tabuleiro[i][j] = "5";  
                         
                 case 7:  
                       System.out.println("voce acertou um navio");  
                       tabuleiro[i][j] = "7";  
                         
                 case 9:  
                       System.out.println("voce acertou um porta-avioes");  
                       tabuleiro[i][j] = "9";  
                         
                     } [/code]

e depois o tabuleiro com o lugar onde ele indicou

Entendi… mas assim, como vc já populou a matriz posição, vc nesse código q ta dando erro vc ta tentando atribuir um valor para a matriz, não entendi pq nesse laço vc ta querendo atribuir valores para a matriz…

vc precisa validar se na matriz na linha e coluna q o cara digitou, qual valor existe lá… certo?

Então vc terá algo assim, sem aquele for que ta o código errado:

switch(posicao[linha][coluna]){ //posicao[linha][coluna] vai retornar o valor q contem na matriz na linha e coluna digitada... e ai entra nos cases.

Ve se é isso… se não for, me explica o q vc quer fazer naquele for q ta com o código errado.

valew cara era isso mesmo , so que assim eu to com outro problema : o tabuleiro é impresso no começo mais depois da jogada ele nao imprime novamente com a jogada mais sim so a jogada sem o tabuleiro, codigo abaixo:

[code]import java.io.;
import java.util.
;
class batalhanaval
{
public static void main(String args[])
{
try
{
int i=0,j=0,max=8,min=8,coluna=0,linha=0;
String tabuleiro[][] = new String[max][min];
int posicao[][] = new int[max][min];
int escolha = posicao[linha][coluna]; //{“a”,“b”,“c”,“d”,“e”,“f”,“g”,“h”,“i”,“j”,“l”,“m”,“n”,“o”,“p”};
//Random ramdom = new Random(4);
for(i=0;i<tabuleiro.length;i++){
for(j=0;j<tabuleiro.length;j++){
posicao[i][j] = 0;
tabuleiro[i][j]=" “;
}
}
System.out.println(” a b c d e f g h"); //numero da coluna
System.out.println(" _________________________________");
for(i=0;i<tabuleiro.length;i++){//preenche as linhas com elementos de 0 a 7//
System.out.print(i + " “); //numero da linhas do lado do tabuleiro
for(j=0;j<tabuleiro.length;j++){//preenche as colunas com elementos de 0 a 7//
System.out.print(”| “+tabuleiro[i][j]+” “);
}
System.out.println(”|");
System.out.println(" _________________________________");
}

    for(i=0;i<tabuleiro.length;i++){
          for(j=0;j<tabuleiro.length;j++){
             	//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;
               
               
             	//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;
                
                //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;
                
        		//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;
	 	  		
	 	  		//PORTA AVIAO//
	 	  		posicao[7][3] = 9;
			 	posicao[7][4] = 9;
	 	  		posicao[7][5] = 9;
	 	  		posicao[7][6] = 9;
	 	  		posicao[7][7] = 9;
	 	  		

          }
    }
     
        Scanner tec = new Scanner(System.in);
        
              System.out.print("Digite a linha: ");
              if(linha >=0 && linha <=7){
                 linha = tec.nextInt(); //0 + ramdom.nextInt(10);
                }else{
                    System.out.print("Linha Invalida");
                }
                
             System.out.print("Digite a Coluna: ");
             if(coluna >= 0 && coluna <= 7){
                 coluna = tec.nextInt();
                }else{
                    System.out.print("Coluna Invalida");
                }
    
                System.out.println(escolha);
             if(tabuleiro[linha][coluna] == " "){
            
                 switch(escolha){
                 case 0:
                       System.out.println("voce atirou na agua, tente novamente");
                       tabuleiro[linha][coluna] = "X";
                       break;
                 case 1:
                       System.out.println("voce acertou um submarino");
                       tabuleiro[linha][coluna] = "1";
                       break;
                 case 3:
                       System.out.println("voce acertou um distroyer");
                       tabuleiro[linha][coluna] = "3";
                       break;
                 case 5:
                       System.out.println("voce acertou um cruzador");
                       tabuleiro[linha][coluna] = "5";
                       break;
                 case 7:
                       System.out.println("voce acertou um navio");
                       tabuleiro[linha][coluna] = "7";
                       break;
                 case 9:
                       System.out.println("voce acertou um porta-avioes");
                       tabuleiro[linha][coluna] = "9";
                       break;
                     } 
                }   
                
    for(i=0;i<tabuleiro.length;i++){
        for(j=0;j<tabuleiro[0].length;j++)
            System.out.print(tabuleiro[i][j]+" ");
            System.out.println();
    }
    
    }
    catch(Exception erro)
    {
        System.exit(0);
    }
}

}[/code]

tudo bem mais mesmo assim o tabuleiro nao aparece nem ferrando

entao ehh isso mesmo tem q mostrar o tabuleiro juntamente com a opçao do usuario fazendo com q se ele acerte ou nao mostre o tabuleiro com o erro ou acerto e faz com que o usuario continue com o jogo

[quote=ursodamongolia]a matriz posiçao pegara as duas variaveis e vai verificar se o cara acertou algum barco no jogo

pra depois mostrar:

[code]switch(linha && coluna == posicao[i][j]){
case 0:
System.out.println(“voce atirou na agua, tente novamente”);
tabuleiro[i][j] = “X”;

                 case 1:  
                       System.out.println("voce acertou um submarino");  
                       tabuleiro[i][j] = "1";  
                         
                 case 3:  
                       System.out.println("voce acertou um distroyer");  
                       tabuleiro[i][j] = "3";  
                         
                 case 5:  
                       System.out.println("voce acertou um cruzador");  
                       tabuleiro[i][j] = "5";  
                         
                 case 7:  
                       System.out.println("voce acertou um navio");  
                       tabuleiro[i][j] = "7";  
                         
                 case 9:  
                       System.out.println("voce acertou um porta-avioes");  
                       tabuleiro[i][j] = "9";  
                         
                     } [/code]

e depois o tabuleiro com o lugar onde ele indicou[/quote]

O switch não recebe um comparador mas um valor que ele, internamente, compara com os cases seguintes.
Então se a variavel tem o valor 1, ele comparará com o case que tenha valor igual a 1 e executará as instruções seguintes.

Obs.: se fosse, por exemplo:

int codigo = 1; switch(codigo) { case 1: //Faz algo case 2: //Faz algo case 3: //Faz algo } Ele executaria todos os cases (1,2,3,etc).
Para que ele execute exclusivamente o case 1, deve haver no fim um break.

int codigo = 1; switch(codigo) { case 1: //Faz algo break; case 2: //Faz algo break; case 3: //Faz algo break; }

da forma como você fez, acabaria aparecendo:

[quote=“seu programa”]voce atirou na agua, tente novamente
voce acertou um submarino
voce acertou um distroyer
voce acertou um cruzador
voce acertou um navio
voce acertou um porta-avioes[/quote]

Não analisei com muito cuidado o seu código, mas me parece faltar uma coisa…

Um jogo simples segue uma regrinha (pode até ser um pouco diferente, mas aí não seria tão simples :stuck_out_tongue: ):

Um loop “infinito” (em geral termina quando o jogo acaba):
Dentro do loop:
1 Desenha a tela
2 Obtêm a ação do usuário
3 Processa a ação do usuário
4 Volta a 1 (ou seja, volta ao início do loop)

Me parece que esse loop que envolve todo o processamento restante não existe no teu caso.

Seu código possui diversos problemas além da não continuidade do jogo, mas a correção q necessita segue:

[code]import java.io.;
import java.util.
;
class batalhanaval
{
public static void main(String args[])
{
//Faltava este WHILE…
while(true){
processar();
}
}

private static void processar() {
	try   
	{   
		int i=0,j=0,max=8,min=8,coluna=0,linha=0;   
		String tabuleiro[][] = new String[max][min];   
		int posicao[][] = new int[max][min];   
		int escolha = posicao[linha][coluna]; //{"a","b","c","d","e","f","g","h","i","j","l","m","n","o","p"};   
		//Random ramdom = new Random(4);   
		for(i=0;i<tabuleiro.length;i++){   
			for(j=0;j<tabuleiro.length;j++){     
				posicao[i][j] = 0;   
				tabuleiro[i][j]=" ";   
			}   
		}   
		System.out.println("    a   b   c   d   e   f   g   h"); //numero da coluna   
		System.out.println("  _________________________________");   
		for(i=0;i<tabuleiro.length;i++){//preenche as linhas com elementos de 0 a 7//   
			System.out.print(i + " ");   //numero da linhas do lado do tabuleiro   
			for(j=0;j<tabuleiro.length;j++){//preenche as colunas com elementos de 0 a 7//   
				System.out.print("| "+tabuleiro[i][j]+" ");   
			}   
			System.out.println("|");   
			System.out.println("  _________________________________");   
		}   
		
		for(i=0;i<tabuleiro.length;i++){   
			for(j=0;j<tabuleiro.length;j++){   
				//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;   
				
				
				//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;   
				
				//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;   
				
				//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;   
				
				//PORTA AVIAO//   
				posicao[7][3] = 9;   
				posicao[7][4] = 9;   
				posicao[7][5] = 9;   
				posicao[7][6] = 9;   
				posicao[7][7] = 9;   
				
				
			}   
		}   
		
		Scanner tec = new Scanner(System.in);   
		
		System.out.print("Digite a linha: ");   
		if(linha >=0 && linha <=7){   
			linha = tec.nextInt(); //0 + ramdom.nextInt(10);   
		}else{   
			System.out.print("Linha Invalida");   
		}   
		
		System.out.print("Digite a Coluna: ");   
		if(coluna >= 0 && coluna <= 7){   
			coluna = tec.nextInt();   
		}else{   
			System.out.print("Coluna Invalida");   
		}   
		
		System.out.println(escolha);   
		if(tabuleiro[linha][coluna] == " "){   
			
			switch(escolha){   
			case 0:   
				System.out.println("voce atirou na agua, tente novamente");   
				tabuleiro[linha][coluna] = "X";   
				break;   
			case 1:   
				System.out.println("voce acertou um submarino");   
				tabuleiro[linha][coluna] = "1";   
				break;   
			case 3:   
				System.out.println("voce acertou um distroyer");   
				tabuleiro[linha][coluna] = "3";   
				break;   
			case 5:   
				System.out.println("voce acertou um cruzador");   
				tabuleiro[linha][coluna] = "5";   
				break;   
			case 7:   
				System.out.println("voce acertou um navio");   
				tabuleiro[linha][coluna] = "7";   
				break;   
			case 9:   
				System.out.println("voce acertou um porta-avioes");   
				tabuleiro[linha][coluna] = "9";   
				break;   
			}   
		}     
		
		for(i=0;i<tabuleiro.length;i++){   
			for(j=0;j<tabuleiro[0].length;j++)   
				System.out.print(tabuleiro[i][j]+" ");   
			System.out.println();   
		}   
		
	}   
	catch(Exception erro)   
	{   
		System.exit(0);   
	}
}   

}
[/code]

Deixarei as pontas, que identifiquei soltas, para que você continue tentando.
Mas seus próximos problemas estão:

  • na variável escolha
  • No loop das posições
  • Na impressão da posição do X, 1, 2, etc.