Ir ao conteúdo

Posts recomendados

Postado

Alguem poderia me dizer qual é o problema

package praticas;

public class JojoVelha {
	
	private String[][] jogoVelha = new String[3][3];
	
	public String[][] getJogoVelha() {
		return jogoVelha;
	}

	public void setJogoVelha(String[][] jogoVelha) {
		this.jogoVelha = jogoVelha;
	}


	public JojoVelha() {
    System.out.println("*** Jogo da Velha ***\n");
	IniciarTabuleiro();	
	
	}
	
	
	public void IniciarTabuleiro() {
		jogoVelha = new String[3][3];
		   for(int i =0; i<jogoVelha.length; i++) {
			   for(int j =0; j<jogoVelha[i].length; j++) {
				   jogoVelha[i][j] = "+";
				   System.out.print(" "+jogoVelha[i][j]);
			   }
			   System.out.println(" ");
		   }
	}
	
	
	public void MostrarTabuleiro() {
		for(int i =0; i<jogoVelha.length; i++) {
			   for(int j =0; j<jogoVelha[i].length; j++) {
				   System.out.print(" "+jogoVelha[i][j]);
			   }
			   System.out.println(" ");
		   }
	}
	
	public boolean jogar1(int n1, int n2) {
		n1--;
		n2--;
		if(jogoVelha[n1][n2].equalsIgnoreCase("X") || jogoVelha[n1][n2].equalsIgnoreCase("O")) {
			System.out.println("Casa já ocupada.");
			return false;
		}
		jogoVelha[n1][n2] = "X";
		return true;
	}
	
	public boolean jogar2(int n1, int n2) {
		n1--;
		n2--;
		if(jogoVelha[n1][n2].equalsIgnoreCase("X") || jogoVelha[n1][n2].equalsIgnoreCase("O")) {
			System.out.println("Casa já ocupada.");
			return false;
		}
		jogoVelha[n1][n2] = "O";
		return true;
	}
	
	
	

}
package praticas;

import java.util.Scanner;

public class JogoDaVelha {
	static int n1, n2;
	static void informarTurno() {
		Scanner scan = new Scanner(System.in);
		 System.out.println("Turno do jogador 1. Entre com a linha e coluna: ");
		   n1 = scan.nextInt();
		   n2 = scan.nextInt();
	}
	static void informarTurno2() {
		Scanner scan = new Scanner(System.in);
		 System.out.println("Turno do jogador 2. Entre com a linha e coluna: ");
		   n1 = scan.nextInt();
		   n2 = scan.nextInt();
	}
	

	public static void main(String[] args) {
		
		
		
	   boolean sair = false;
		  JojoVelha jogoVelha = new JojoVelha();
		  while(!sair) {
			  do {
		   informarTurno();
		   jogoVelha.jogar1(n1, n2);
		   jogoVelha.MostrarTabuleiro();
			  }
			  while(jogoVelha.jogar1(n1, n2) == false);
		   
			 
			  do {
		   informarTurno2();
		   jogoVelha.jogar2(n1, n2);
		   break;
			  }
			  while(jogoVelha.jogar2(n1, n2) == false);
			  
		   jogoVelha.MostrarTabuleiro();
			  
		   
	   }
	   

	}
	

}

Eu tho tentando manter dentro do loop a condição se em uma posição do array já esta ocupado, e se estiver refazer a jogada. O problema ta nesse loop que não sei o porque mas sempre reconhece o método como falso mesmo se for a primeira jogada

  • Curtir 1
Postado

@soumma Olá. Experimenta iniciar o tabuleiro assim (com todas as posições vazias) :

public void IniciarTabuleiro() {
    jogoVelha = new String[3][3];
    for(int i =0; i<jogoVelha.length; i++) {
        for(int j =0; j<jogoVelha[0].length; j++) {
            jogoVelha[i][j] = " ";
        }
    }

O problema no seu código é que na classe onde você verifica se a casa está ocupada ou não o tabuleiro inda não foi iniciado com as posições todas vazias. Logo, sempre vai dar erro

É esse o problema 😀

Outro ponto: para comparar Strings em Java é com o método equals

Ex:

jogoVelha[n1][n2].equals("X")

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!