import java.io.*;
public class Main{
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.print("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.print("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//
while (true) {
linha = lerLinha();
coluna = lerColuna();
verificaPosicao(coluna,linha);
imprimeTabuleiro();
}
//System.out.println(linha + " " + coluna);
}
}
Ultima ajuda!Batalha naval!
3 Respostas
Cadê a endentação do seu código?!?!
package batalha_naval;
import java.io.*;
public class Main {
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.print("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.print("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 boolean verificaFimDoJogo() {
boolean status = false;
for (int lin = 0; lin < 8; lin++) {
for (int col = 0; col < 8; col++) {
if (tabuleiro[lin][col] == " ") {
status = true;
}
}
}
return status;
}
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//
while (verificaFimDoJogo()) {//<--Tem que mudar essa condição aqui***
linha = lerLinha();
coluna = lerColuna();
verificaPosicao(coluna, linha);
imprimeTabuleiro();
}
System.out.println("Fim de Jogo");
//System.out.println(linha + " " + coluna);
}
}
Fala ai ale_sjn, deu uma olhada no seu joguinho e achei irado… :!:
Criei um metodo chamado verificaFimDoJogo() que a condição dele é retornar false quando todos os elementos da matriz tabuleiro estiveiro preenchidos e nesse caso o metodo retorna false para o WHILE e ai ele termina o jogo. Voce pode alterar o metodo se quiser que o jogo termine por exemplo caso o jogador acerte todos os veiculos disponiveis.
Bem segue ai minha colaboração
Abração
Max
Fala ai ale_sjn, me amarrei no joguinho e aproveitei para implementar a solução de Fim de jogo por acertos.
Criei uma constante chamada QuantidadeAcertos com o valor definido de 35 que é a quantidade de celulas com partes de veiculos, criei um ArrayList (importar java.util.*) chamado acertos que é preenchido dentro de verificaPosicao e a condição de parada no While ficou assim
while (verificaFimDoJogoAcertouTudo())
Segue o codigo completo alterado
import java.io.*;
import java.util.*;
public class Main {
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 ArrayList<Integer> acertos = new ArrayList<Integer>();
public static final Integer QuantidadeAcertos = 35;
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;
}// 5 acertos
//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;
}//8 acertos
//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;
}//9 acertos
//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;
}//8 acertos
//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;
}//5 acertos
/*
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.print("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.print("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";
acertos.add(1);
break;
case 3:
System.out.println("voce acertou um distroyer");
tabuleiro[lin][col] = "3";
acertos.add(1);
break;
case 5:
System.out.println("voce acertou um cruzador");
tabuleiro[lin][col] = "5";
acertos.add(1);
break;
case 7:
System.out.println("voce acertou um navio");
tabuleiro[lin][col] = "7";
acertos.add(1);
break;
case 9:
System.out.println("voce acertou um porta-avioes");
tabuleiro[lin][col] = "90";
acertos.add(1);
break;
}
}
}
public static boolean verificaFimDoJogoTabuleiroCheio() {
boolean status = false;
for (int lin = 0; lin < 8; lin++) {
for (int col = 0; col < 8; col++) {
if (tabuleiro[lin][col] == " ") {
status = true;
}
}
}
return status;
}
public static boolean verificaFimDoJogoAcertouTudo() {
boolean status = false;
if (acertos.size() < QuantidadeAcertos) {
status = true;
}
return status;
}
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//
while (verificaFimDoJogoAcertouTudo()) {//<--Tem que mudar essa condição aqui***
// while (verificaFimDoJogoTabuleiroCheio()) {//<--Tem que mudar essa condição aqui***
linha = lerLinha();
coluna = lerColuna();
verificaPosicao(coluna, linha);
imprimeTabuleiro();
}
System.out.println("Fim de Jogo");
//System.out.println(linha + " " + coluna);
}
}
Abração :!:
Max