Bem gente, estou fazendo um jogo da velha que você joga contra o pc… o problema é que não sei como fazer para o código percorrer a matriz para saber os os espaços que ainda não foram preenchidos para preencher como se voce a jogada do pc
se quiserem eu envio o código que já foi feito até agora
O que pretende ter como retorno? Os índices que ainda não foram preenchidos? Para verificar é simples, porém é necessário saber como está sendo preenchido seu array. Nos envie o código.
System.out.println("Digite o seu Nome: “);
String jogador = sc.next();
System.out.println(“Vamos começar”);
int matriz[][] = new int[3][3];
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " “);
}
System.out.println(” “);
}
System.out.println(””);
System.out.println("Vez do Jogador ");
System.out.println("");
int jogada = sc.nextInt();
switch (jogada) {
case 1:
matriz[0][0] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
System.out.println("Vez do PC");
matriz[0][2] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 2:
matriz[0][1] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
System.out.println("Vez do PC");
matriz[1][0] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 3:
matriz[0][2] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
System.out.println("Vez do PC");
matriz[1][1] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 4:
matriz[1][0] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
System.out.println("Vez do PC");
matriz[1][2] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 5:
matriz[1][1] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
System.out.println("Vez do PC");
matriz[2][0] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 6:
matriz[1][2] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
System.out.println("Vez do PC");
matriz[2][1] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 7:
matriz[2][0] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
System.out.println("Vez do PC");
matriz[2][2] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 8:
matriz[2][1] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
System.out.println("Vez do PC");
matriz[0][0] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 9:
matriz[2][2] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
System.out.println("Vez do PC");
matriz[0][1] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
default:
System.out.println("Digitou Errado!");
}
System.out.println("Vez do Jogador ");
System.out.println("");
jogada = sc.nextInt();
switch (jogada) {
case 1:
matriz[0][0] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
System.out.println("Vez do PC");
matriz[0][2] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 2:
matriz[0][1] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
System.out.println("Vez do PC");
matriz[1][0] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 3:
matriz[0][2] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
System.out.println("Vez do PC");
matriz[1][1] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 4:
matriz[1][0] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
System.out.println("Vez do PC");
matriz[1][2] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 5:
matriz[1][1] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
System.out.println("Vez do PC");
matriz[2][0] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 6:
matriz[1][2] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
System.out.println("Vez do PC");
matriz[2][1] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 7:
matriz[2][0] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
System.out.println("Vez do PC");
matriz[2][2] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 8:
matriz[2][1] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
System.out.println("Vez do PC");
matriz[0][0] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 9:
matriz[2][2] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
System.out.println("Vez do PC");
matriz[0][1] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
default:
System.out.println("Digitou Errado!");
}
System.out.println("Vez do Jogador ");
System.out.println("");
jogada = sc.nextInt();
switch (jogada) {
case 1:
matriz[0][0] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 2:
matriz[0][1] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 3:
matriz[0][2] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 4:
matriz[1][0] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 5:
matriz[1][1] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 6:
matriz[1][2] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 7:
matriz[2][0] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 8:
matriz[2][1] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 9:
matriz[2][2] = 1;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
default:
System.out.println("Digitou Errado!");
}
for (int f = 0; f < 3; f++) {
if (matriz[f][0] == 1 & matriz[f][1] == 1 & matriz[f][2] == 1) {
System.out.println("Ganhouu o Jogador 1");
System.exit(0);
}
}
for (int h = 0; h < 3; h++) {
if (matriz[0][h] == 1 & matriz[1][h] == 1 & matriz[2][h] == 1) {
System.out.println("Ganhouu o Jogador ");
System.exit(0);
}
}
if (matriz[0][0] == 1 & matriz[1][1] == 1 & matriz[2][2] == 1) {
System.out.println("Ganhoou o Jogador ");
System.exit(0);
}
if (matriz[2][0] == 1 & matriz[1][1] == 1 & matriz[0][2] == 1) {
System.out.println("Ganhoou o Jogador ");
System.exit(0);
}
switch (jogada) {
case 1:
System.out.println("Vez do PC");
matriz[0][1] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 2:
System.out.println("Vez do PC");
matriz[0][2] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 3:
System.out.println("Vez do PC");
matriz[1][0] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 4:
System.out.println("Vez do PC");
matriz[1][1] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 5:
System.out.println("Vez do PC");
matriz[1][2] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 6:
System.out.println("Vez do PC");
matriz[2][0] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 7:
System.out.println("Vez do PC");
matriz[2][1] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 8:
System.out.println("Vez do PC");
matriz[2][2] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
case 9:
System.out.println("Vez do PC");
matriz[0][0] = 2;
for (int l = 0; l < matriz.length; l++) {
for (int c = 0; c < matriz[0].length; c++) {
System.out.print(matriz[l][c] + " ");
}
System.out.println(" ");
}
break;
default:
System.out.println("Digitou Errado!");
}
você pode ver que está bem extenso, pois estava fazendo assim mesmo, manualmente, porém chega uma hora que não da mais certo e precisa mesmo verificar a matriz, em relação a esses for eles servem para checar a matriz e encerrar o jogo, nesse ultimo swtich case ele é a parte que o pc joga porém não tem como funcionar pois os numeros podem se coincidirem com uma posição da matriz que já foi preenchida, por isso precisa verificar
Colega, não duplica o tópico.
Pôxa, você implementou todo o programa dentro do método main
, isso não se faz, quebra ele em métodos menores.
Um exemplo:
import java.io.PrintStream;
import java.util.Scanner;
public class JogoVelha {
private class Computador extends Jogador {
Computador(int peca, String nome) {
super(peca, nome);
}
@Override
void jogar() {
// Aqui você implementa a jogada automática do computador
}
}
private class Humano extends Jogador {
Humano(int peca, String nome) {
super(peca, nome);
}
void jogar() {
LOOP: while (true) {
escrever("Digite uma opção de 1 a 9");
int posicaoDigitada = lerInt();
int posicao = 1;
for (int l = 0; l < tabuleiro.length; l++) {
for (int c = 0; c < tabuleiro[0].length; c++) {
if (posicao == posicaoDigitada) {
if (tabuleiro[l][c] != 0) {
escrever("Posição já está preenchida!");
continue LOOP;
}
tabuleiro[l][c] = peca;
return;
}
posicao++;
}
}
escrever("Posição inválida: " + posicaoDigitada);
}
}
}
private abstract class Jogador {
final int peca;
final String nome;
Jogador(int peca, String nome) {
this.peca = peca;
this.nome = nome;
}
abstract void jogar();
}
private static final int CONTRA_PC = 1;
private static final int CONTRA_AMIGO = 2;
public static void main(String[] args) {
JogoVelha programa = new JogoVelha();
programa.executar();
}
private final Scanner entrada = new Scanner(System.in);
private final PrintStream saida = System.out;
private int tabuleiro[][];
private Jogador jogador1;
private Jogador jogador2;
private int modoDeJogo;
public void executar() {
selecionarModoDeJogo();
selecionarJogadores();
iniciarPartida();
}
private void apresentarTabuleiro() {
for (int l = 0; l < tabuleiro.length; l++) {
for (int c = 0; c < tabuleiro[0].length; c++) {
saida.print(tabuleiro[l][c] + " ");
}
escrever(" ");
}
}
private void escrever(String mensagem) {
saida.println(mensagem);
}
private void inicializarTabuleiro() {
tabuleiro = new int[3][3];
}
private void iniciarPartida() {
inicializarTabuleiro();
escrever("Vamos Começar...");
Jogador jogadorAtual = jogador1;
while (!jogoAcabou()) {
apresentarTabuleiro();
escrever("");
escrever("Vez do " + jogadorAtual.nome);
jogadorAtual.jogar();
jogadorAtual = trocarJogador(jogadorAtual);
}
}
private boolean jogoAcabou() {
// aqui vai a lógica pra ver se o jogo acabou
// se acabou ou empatou, tem que retornar true
return false;
}
private int lerInt() {
return Integer.parseInt(entrada.nextLine());
}
private String lerString() {
return entrada.nextLine();
}
private void selecionarJogadores() {
escrever("Quem vai ser o jogador 1: ");
String nome = lerString();
jogador1 = new Humano(1, nome);
escrever("Quem vai ser o jogador 2: ");
if (modoDeJogo == CONTRA_PC) {
if (nome.equalsIgnoreCase("Computador")) {
nome = "Computador Real"; // o usuário engraçadinho pos o nome de "computador"
} else {
nome = "Computador";
}
jogador2 = new Computador(2, nome);
} else if (modoDeJogo == CONTRA_AMIGO) {
nome = lerString();
jogador2 = new Humano(2, nome);
}
}
private void selecionarModoDeJogo() {
escrever("Bem Vindo ao Jogo da Velha!");
while (true) {
escrever("Selecione o modo de Jogo");
escrever(CONTRA_PC + " - Contra o PC");
escrever(CONTRA_AMIGO + " - Com Amigo");
modoDeJogo = lerInt();
switch (modoDeJogo) {
case CONTRA_AMIGO:
case CONTRA_PC:
return;
default:
escrever("Modo inválido: " + modoDeJogo);
continue;
}
}
}
private Jogador trocarJogador(Jogador jogador) {
return jogador == jogador1 ? jogador2 : jogador1;
}
}