- Auxílio em um trabalho de escola -

[b]Saudações. Ae gente vou fazer um jogo de batalha naval como trabalho da disciplina de programação la da facul. Queria pedir ajuda porque eu e minha dupla sabemos pouco de [color=red]Java[/color]. Uma das duvidas é quanto a tabela do jogo, onde ficam os navios do jogador e do pc. Usamos o NetBeans.

Abç.[/b]

EDIT (Moderador) - Seja mais específico no título de seu post. Não use “AJUDA”, “HELP” ou outras coisas.

E quem não precisa de ajuda???
Seja mais claro no Assunto de Sua Thread. Tipo já estudaram pelo menos OOP? Caso não da uma olhada nesse material FJ11 .

[]s

Veja este tópico. Pode ser que te ajude:
http://www.guj.com.br/posts/list/60028.java

você pode usar vetores para criar seu tabuleiro do jogo;
separa em classes, tipo: a classe jogador, a classe tabuleiro e faz tambem uma classe para suas ações

Se você sabe pouco Java, comece estudando por aí. A apostila ali em cima é um bom começo.

Eu também estou fazendo este jogo pra faculdade ( será que somos da mesma turma? :lol: ).
Eu represento meu tabuleiro como um Map<String, Casa>, onde String é a coordenada formada por uma letra e um número ( por exemplo, “A1” ) e Casa é uma classe que representa uma casa do tabuleiro.
Mais informações em: http://www.guj.com.br/posts/list/108070.java

Ao ver esse tipo de tópico eu fico pensando: alguem não tem noção nessa historia. Ou o professor ensinou um hello world e passou para um jogo de batalha naval, ou os alunos estão numa turma avançada mas sabem menos do que deveriam.

Esse tipo de jogo vc precisa ter algum domínio de arrays ou estruturas semelhantes. Mesmo uma apostila de iniciantes não vai elucidar tudo nesse quesito, pois domínio vem com experiência.

Por exemplo, vc tem entidades no jogo que ocupam um espaço, outras entidades ocupam 2 espaços contiguos, outras entidades ocupam mais, etc. Aparentemente vc tem 3 objetos ai: um Tabuleiro, as Celulas do Tabuleiro e os aviões, encouraçados, etc.

Veja esse exemplo:
http://fragmental.com.br/wiki/index.php?title=Fantoches

Aparentemente vc poderia generalizar para diferentes tipos de aviões/navios.

Olá pessoal. Também estou fazendo um trabalho de escola, na verdade preciso começar… mas a questão de herança no problema abaixo está me complicando (quem herda de quem…) Preciso definir variáveis, métodos, classes (a superclasse, etc) do seguinte problema:

Uma rodoviária de transporte interurbano deseja informatizar seus serviços.
Na rodoviária existem várias empresas de ônibus que são caracterizadas pelo nome e CNPJ. Em cada empresa trabalhamm funcionários caracterizados pelo CPF, nome e endereço. Os funcionários são atendentes, motoristas. Os atendentes são caracterizados também pelo horário de trabalho. Os motoristas são caracterizados também pelo número da carteira de motorista profissional. Os ônibus possuem placa, ano de fabricação, capacidade do bagageiro. O ônibus pode ser comum, caracterizado pela quantidade de acentos, ou pode ser leito, caracterizado pela quantidade de poltronas.
Uma viagem é realizada por um ônibus, por um funcionário motorista e uma linha a ser atendida. Uma linha é caracterizada por nome, horário de início, a duração e formada por várias rodoviárias em que o ônibus pode passar em um determinado horário.
As rodoviárias são caracterizadas pelo nome, endereço, cidade e estado.
Quando um passageiro compra uma passagem, contém informações da viagem além da poltrona e do atendente. O passageiro é caracterizado pelo nome, RG e endereço.
Construa o diagrama de classes e implemente em uma linguagem de programação orientada a objetos

Preciso pelo menos definir as classes (quais são) e quem herda de quem no processo de herança.
Obrigado!

Oi Tnaires,

Será que somos da mesma turma, ou melhor…faculdade? Eu estudo no JK - DF e vc?
Cara tô apanhando demais nesse trabalho, não entendo muita coisa de java… Vc vai postar mesmo o código completo aqui? Desde já agradeço, a sua ajuda…foi de grande valia!!

Abç.

peczenyj

"Ao ver esse tipo de tópico eu fico pensando: alguem não tem noção nessa historia. Ou o professor ensinou um hello world e passou para um jogo de batalha naval, ou os alunos estão numa turma avançada mas sabem menos do que deveriam. "

Realmente é revoltante, né! Mas o que aconteceu é que o professor correu demais com a matéria, e eu, assim como outros alunos ficamos perdidos! Não consegui acompanhar!!!
Aproveitando o seu conhecimento… será que vc poderia me dar alguma dica de como “E-N-T-E-N-D-E-R JAVA”… parece que a lógica não entra na minha cabeça!! Não quero desistir…

Abç.


Bruno_Leonardo
e ViniGodoy, valew pela dica!!! Quero agradecer a todos brothers q responderam, valew!!!

Peguei o exemplo do “tnaires” que por sinal esta redondinho e acrescentei pouca coisa:

  • WHILE PARA SETAR AS CONDICOES DE ENCERRAMENTO DO JOGO, O CARA TEM 20 TENTATIVAS OU FAZ 20 PONTOS, ENTAO FIM DE JOGO!
  • VC ACERTA ISSO DO JEITO Q ACHAR MELHOR!

[]s

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

public class BatalhaNaval {
	
	static int pontos = 0;

	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];
		pontos = pontos + escolha;
		System.out.println("Pontos: "+pontos);
		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 limpaTela(){
		for (int i = 0; i < 100; i++) {
			System.out.println("\n");			
		}
		
	}

	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//
		int i = 0;
		
		//ACERTA ESSE WHILE PARA SETAR AS CONDICOES DE ENCERRAMENTO DO JOGO
		//ABAIXO OU O CARA TEM 20 TENTATIVAS OU FAZ 20 PONTOS
		while (i < 20 && pontos < 20) {
			linha = lerLinha();
			coluna = lerColuna();
			limpaTela();
			verificaPosicao(coluna, linha);			
			imprimeTabuleiro();			
			i++;
		}
		System.out.println("Fim do jogo!");


	}

}

Muito bom. Você poderia refatorar os métodos que posicionam as entidades no tabuleiro para randomizar as posições.

Olá…tudo bem? Primeiro queria pedir desculpas pelo incômodo…te encontrei em um fórum sobre java(GUJ),e talvez você possa me ajudar…

ainda estou no primeiro ano de sistemas e tenho um projeto de fluxo de caixa para entregar hoje, mais já estou tentendo fazer a algum tempo e não estou conseguindo, agora estou desesperada em busca de ajuda , rsrss…creio que para você seja simples, se puder me ajudar…ficarei muito agradecida!

Vou mandar em anexo o código, se puder dar uma olhada.

abraços Melissa Ferrer

import javax.swing.JOptionPane;

public class Entrada
{
private double previsto[][];
private double realizado[][];

public Entrada()
{
previsto = new double[7][20];
realizado = new double[7][20];
}

public void inserirValoresPrevisto()
{
for(int linha=0; linha<previsto.length; linha++)
{
for(int coluna=0; coluna<previsto[0].length; coluna++)
{
previsto[linha][coluna] = digitarValor();
}
}
}

public void inserirValoresRealizado()
{
for(int linha=0; linha<realizado.length; linha++)
{
for(int coluna=0; coluna<realizado[0].length; coluna++)
{
realizado[linha][coluna] = digitarValor();
}
}
}

public double digitarValor()
{
double v = Double.parseDouble(JOptionPane.showInputDialog(“Digite o valor previsto a ser armazenado”));
return v;
}

public String totalValores_Previsto()
{
String saida = “”;

for(int linha=0; linha<7; linha++)
{
for(int coluna=0;coluna<20;linha++)
{
saida+= " previsto["+linha+"]["+coluna+"]="+previsto[linha][coluna]+"\n";
}
}

return saida;
}

public double totalValores_Realizado()
{
double total = 0;

for(int linha=0; linha<7; linha++)
{
for(int coluna=0;coluna<20;linha++)
{
total+= realizado[linha][coluna];
}
}

return total;
}

public double totalConta_Previsto(int entrada)
{
double total = 0;

for( int i = 0; i < previsto[0].length; i++ )
{
total += previsto[entrada][ i ];
}

return total;
}

public double totalConta_Realizado(int entrada)
{
double total = 0;

for( int i = 0; i < realizado[0].length; i++ )
{
total += realizado[entrada][ i ];
}

return total;
}

public double somaPrevisto()
{
double somaPrevisto = 0;

for(int linha=0; linha<previsto.length; linha++)
{
for(int coluna=0; coluna<previsto[0].length; coluna++)
{
somaPrevisto+= previsto[linha][coluna];
}
}
return somaPrevisto;
}

public double somaRealizado()
{
double somaRealizado = 0;

for(int linha=0; linha<realizado.length; linha++)
{
for(int coluna=0; coluna<realizado[0].length; coluna++)
{
somaRealizado += realizado[linha][coluna];
}
}
return somaRealizado;
}

public double totalPorDiaPrevisto(int dia)
{
double total = 0;

for( int i = 0; i < previsto.length; i++ )
{
total += previsto[i][dia];
}

return total;
}

public double totalPorDiaRealizado(int dia)
{
double total = 0;

for( int i=0; i<realizado.length; i++ )
{
total += realizado[ i ][ dia ];
}

return total;
}

public String gastoMedioPrevisto()
{
double media,soma = 0;
String saida = “”;

for(int contL = 0; contL<previsto.length; contL++)
{
for(int contC = 0; contC<previsto[0].length; contC++)
{
soma += previsto[contL][contC];
}
media = soma/previsto.length;
saida = "média: "+media;
}

return saida;

}

public String gastoMedioRealizado()
{
double media,soma = 0;
String saida = “”;

for(int contL = 0; contL<realizado.length; contL++)
{
for(int contC = 0; contC<realizado[0].length; contC++)
{
soma += realizado[contL][contC];
}
media = soma/realizado.length;
saida = "média: "+media;
}

return saida;
}

public void setPrevisto(int linha,int coluna, double valor)
{
if(linha<previsto.length && coluna<previsto[0].length && valor>0)
{
previsto[linha][coluna] = valor;
}

else
{
JOptionPane.showMessageDialog(null, “Valor Inválido”);
}
}

public void setRealizado(int linha,int coluna, double valor)
{
if(linha<realizado.length && coluna<realizado[0].length &&valor > 0)
{
previsto[linha][coluna] = valor;
}

else
{
JOptionPane.showMessageDialog(null, “Valor Inválido”);
}
}

public double maiorVlr_Previsto()
{
double maior = previsto[0][0];

for(int iL=1; iL<previsto.length; iL++)
{
for(int iC=1; iC<previsto.length; iC++)
{
if(maior<previsto[iL][iC])
{
maior = previsto[iL][iC];
}
}
}
return maior;
}

public double menorVlr_Previsto()
{
double menor = previsto[0][0];

for(int iL=1; iL<previsto.length; iL++)
{
for(int iC=1; iC<previsto.length; iC++)
{
if(menor>previsto[iL][iC])
{
menor = previsto[iL][iC];
}
}
}
return menor;
}

public double maiorVlr_Realizado()
{
double maior = realizado[0][0];

for(int iL=1; iL<realizado.length; iL++)
{
for(int iC=1; iC<realizado.length; iC++)
{
if(maior<realizado[iL][iC])
{
maior = realizado[iL][iC];
}
}
}
return maior;
}

public double menorVlr_Realizado()
{
double menor = realizado[0][0];

for(int iL=1; iL<realizado.length; iL++)
{
for(int iC=1; iC<realizado.length; iC++)
{
if(menor>realizado[iL][iC])
{
menor = realizado[iL][iC];
}
}
}
return menor;
}

public double getPrevisto(int l, int c)
{
return previsto[l][c];
}

public double getRealizado(int l, int c)
{
return realizado[l][c];
}

}

P.S a classe saida é igual a entrada, eu tenho que fazer uma classe Consolidado que chame todos os métodos de entrada e saida…depois uma outra com o main aonde o usuário vai ter acesso ao programa!

Powered by JForum 2.1.8 © JForum Team