Dúvida sobre verificação no jogo da Velha

Galera estou fazendo um jogo da velha para um trabalho na escola, por enquanto vou fazer jogando com outro amigo e depois contra o pc, o problema é que não sei tipo: se o jogador 1 escolher opção que já foi escolhida pelo jogador 2 avisar a ele vou mandar o codigo

/*

  • To change this license header, choose License Headers in Project Properties.
  • To change this template file, choose Tools | Templates
  • and open the template in the editor.
    */
    package velha2;

import java.util.Scanner;

/**
*

  • @author 20171104010012
    */
    public class Velha2 {

    public static void Mensagens() {
    System.out.println(“Bem Vindo ao Jogo da Velha!”);
    System.out.println(“Modo de Jogo”);
    System.out.println(“1 - Contra o PC”);
    System.out.println(“2 - Com Amigo”);
    }

    /**

    • @param args the command line arguments
      */
      public static void main(String[] args) {
      // TODO code application logic here
      Scanner sc = new Scanner(System.in);
      Mensagens();
      int Modo_de_Jogo = sc.nextInt();
      if (Modo_de_Jogo == 1) {

      } else {
      if (Modo_de_Jogo == 2) {
      System.out.println("Quem vai ser o jogador 1: ");
      String jogador1 = sc.next();
      System.out.println("Quem vai ser o jogador 2: “);
      String jogador2 = sc.next();
      System.out.println(“Vamos Começar…”);
      int matriz1[][] = new int [3][3];
      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(” “);
      }
      matriz[0][0] = 0;
      matriz[0][1] = 0;
      matriz[0][2] = 0;
      matriz[1][0] = 0;
      matriz[1][1] = 0;
      matriz[1][2] = 0;
      matriz[2][0] = 0;
      matriz[2][1] = 0;
      matriz[2][2] = 0;
      for (int i = 0;i< 9;i++){
      System.out.println(””);
      System.out.println(“Vez do Jogador 1”);
      System.out.println(“Digite uma opção de 1 a 9”);

           for (int l = 0; l < matriz1.length; l++) {
               for (int c = 0; c < matriz1[0].length; c++) {
                   System.out.print(matriz1[l][c] + " ");
               }
               System.out.println(" ");
           }
          
           System.out.println("");
           int jogada1 = sc.nextInt();
           switch (jogada1) {
               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!");
           }
           System.out.println("");
           System.out.println("Vez do Jogador 2");
      
      
           System.out.println("");
           int jogada2 = sc.nextInt();
      
           switch (jogada2) {
               case 1:
      
                   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 2:
      
                   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 3:
      
                   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 4:
                   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 5:
                   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 6:
                   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 7:
                   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 8:
                   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 9:
                   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;
               default:
                   System.out.println("Digitou Errado!");
      
           }
      
           }
       }
      

      }

    }

}

Algumas perguntas:

  • Porque você tem um objeto matriz e um objeto matriz1?
  • Percebeu que toda a montoeira de código do jogador 1 é igual ao código do jogador 2, exceto pelo valor que você põe no array?
  • É realmente necessário fazer um laço dentro de cada case? não é mais fácil imprimir o array depois do switch?