E uma coisinha o nome da sua Classe deve ser em maiusculo
BatalhaNaval
não esqueça q JAVA tem case SenSiTivE
ursodamongolia
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
Poneis123
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?
ursodamongolia
tipo assim se a linha e coluna estiverem certas ,
System.out.print("Digite a linha: ");if(linha>=0&&linha<=7){linha=tec.nextInt();//0+ramdom.nextInt(10);}else{System.out.print("LinhaInvalida");}System.out.print("Digite a Coluna: ");if(coluna>=0&&coluna<=7){coluna=tec.nextInt();}else{System.out.print("ColunaInvalida");}
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:
switch(linha&&coluna==posicao[i][j]){case0:System.out.println("voce atirou na agua, tente novamente");tabuleiro[i][j]="X";case1:System.out.println("voce acertou um submarino");tabuleiro[i][j]="1";case3:System.out.println("voce acertou um distroyer");tabuleiro[i][j]="3";case5:System.out.println("voce acertou um cruzador");tabuleiro[i][j]="5";case7:System.out.println("voce acertou um navio");tabuleiro[i][j]="7";case9:System.out.println("voce acertou um porta-avioes");tabuleiro[i][j]="9";}
e depois o tabuleiro com o lugar onde ele indicou
Poneis123
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:
Ve se é isso… se não for, me explica o q vc quer fazer naquele for q ta com o código errado.
ursodamongolia
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:
importjava.io.*;importjava.util.*;classbatalhanaval{publicstaticvoidmain(Stringargs[]){try{inti=0,j=0,max=8,min=8,coluna=0,linha=0;Stringtabuleiro[][]=newString[max][min];intposicao[][]=newint[max][min];intescolha=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 colunaSystem.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 tabuleirofor(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;}}Scannertec=newScanner(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){case0:System.out.println("voce atirou na agua, tente novamente");tabuleiro[linha][coluna]="X";break;case1:System.out.println("voce acertou um submarino");tabuleiro[linha][coluna]="1";break;case3:System.out.println("voce acertou um distroyer");tabuleiro[linha][coluna]="3";break;case5:System.out.println("voce acertou um cruzador");tabuleiro[linha][coluna]="5";break;case7:System.out.println("voce acertou um navio");tabuleiro[linha][coluna]="7";break;case9: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(Exceptionerro){System.exit(0);}}}
ursodamongolia
tudo bem mais mesmo assim o tabuleiro nao aparece nem ferrando
ursodamongolia
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
WellingtonRamos
ursodamongolia:
a matriz posiçao pegara as duas variaveis e vai verificar se o cara acertou algum barco no jogo
pra depois mostrar:
switch(linha&&coluna==posicao[i][j]){case0:System.out.println("voce atirou na agua, tente novamente");tabuleiro[i][j]="X";case1:System.out.println("voce acertou um submarino");tabuleiro[i][j]="1";case3:System.out.println("voce acertou um distroyer");tabuleiro[i][j]="3";case5:System.out.println("voce acertou um cruzador");tabuleiro[i][j]="5";case7:System.out.println("voce acertou um navio");tabuleiro[i][j]="7";case9:System.out.println("voce acertou um porta-avioes");tabuleiro[i][j]="9";}
e depois o tabuleiro com o lugar onde ele indicou
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.
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
WellingtonRamos
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 ):
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.
WellingtonRamos
Seu código possui diversos problemas além da não continuidade do jogo, mas a correção q necessita segue:
importjava.io.*;importjava.util.*;classbatalhanaval{publicstaticvoidmain(Stringargs[]){//Faltava este WHILE....while(true){processar();}}privatestaticvoidprocessar(){try{inti=0,j=0,max=8,min=8,coluna=0,linha=0;Stringtabuleiro[][]=newString[max][min];intposicao[][]=newint[max][min];intescolha=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;}}Scannertec=newScanner(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){case0:System.out.println("voce atirou na agua, tente novamente");tabuleiro[linha][coluna]="X";break;case1:System.out.println("voce acertou um submarino");tabuleiro[linha][coluna]="1";break;case3:System.out.println("voce acertou um distroyer");tabuleiro[linha][coluna]="3";break;case5:System.out.println("voce acertou um cruzador");tabuleiro[linha][coluna]="5";break;case7:System.out.println("voce acertou um navio");tabuleiro[linha][coluna]="7";break;case9: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(Exceptionerro){System.exit(0);}}}
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.