Passar Arrays Bidimensionais como parametro

3 respostas
gustavo_mb

Olá pessoal! Acompanho há algum tempo o fórum, porém só agora criei a conta.
Meu problema é com Arrays.... principalmente as com mais de uma dimensão.

Estou querendo criar um game estilo batalha naval, sem a utilização de GUI. Comentei o código para que possam entender.

public class Run {
	
	public static void main(String[] args) {		
		Celulas b = new Celulas();
		b.criarCelulasAlvo();		
	}

}
import java.util.Random;

public class Celulas {
	
	Jogador player = new Jogador(); //cria uma referencia ao objeto Jogador
	
	public void criarCelulasAlvo(){
	
		Random random = new Random(); //instancia a classe Random
		int x = random.nextInt(10); // atribui a X um valor aleatório entre 0 e 9
		int y  = random.nextInt(10); // atribui a Y um valor aleatório entre 0 e 9
		Celulas[][] celulasAlvo = new Celulas[10][10]; //aloca espaço para uma array de 10 linhas e 10 colunas
		celulasAlvo[x][y] = new Celulas(); //instancia uma coluna com o X e Y que foram gerados com o Random
		System.out.println(x + " " + y); //apenas imprime o X e Y gerados
		player.palpitar(celulasAlvo[x][y]); //invoca o método palpitador, passando X e Y
	}
}
import javax.swing.JOptionPane;

public class Jogador {

	int numeroDeAcertos = 0; //guarda o numero de acertos
	int numeroDePalpites = 1; //guarda o numero de palpites
	String resultado = "Errou!"; //define uma string com resultado default

	public void palpitar(Celulas[][] celulas){
		while(numeroDeAcertos < 3) { 
			int palpiteX = Integer.parseInt(JOptionPane.showInputDialog("Digite o seu " + numeroDePalpites +" palpite X"));
			int palpiteY = Integer.parseInt(JOptionPane.showInputDialog("Digite o seu " + numeroDePalpites +" palpite Y"));
			for(int i = 0; i < celulas.length; i++) {
				for(int j = 0; j < celulas[i].length; i++){
				if(){//como fazer para comparar os palpites com o X e Y gerados na classe Celulas????
					resultado = "Acertou!";
					numeroDeAcertos++;
					if(numeroDeAcertos == 3) {
						resultado = "Ganhou!";				
					}
					break;
				}
				}
			}
			
			System.out.println(resultado);
			System.out.println("Palpites utilizados: " + numeroDePalpites);
			numeroDePalpites++;
			resultado = "errou";
		}
		
	}

	
}

Obrigado desde já!

3 Respostas

WendersonLP

Você primeiro tem que criar o conjunto de células que são válidas para determinada rodada
do jogo. E depois de criado é só pegar as células selecionadas pelo jogador e fazer a comparação
com as células válidas.

Lembrado que é só uma sugestão, pois não jogo batalha naval.

gustavo_mb

WendersonLP:
Você primeiro tem que criar o conjunto de células que são válidas para determinada rodada
do jogo.

Sim, isso eu já fiz. Nesse protótipo cria-se uma array de 10x10, e gera randomicamente um valor X(linha) e Y(coluna) que seria o alvo.

WendersonLP:
E depois de criado é só pegar as células selecionadas pelo jogador e fazer a comparação
com as células válidas.

Lembrado que é só uma sugestão, pois não jogo batalha naval.

Ai está o meu problema! rsrs’
Não sei como fazer a comparação dos valores digitado pelo usuário com o X e Y gerados.

Mesmo assim, obrigado pela resposta! :slight_smile:

gustavo_mb

Mais alguém pode me ajudar? :?
Ainda estou com essa dúvida…

Criado 3 de outubro de 2011
Ultima resposta 4 de out. de 2011
Respostas 3
Participantes 2