Jogo da velha contra o computador

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;
    }
}