Ir para conteúdo

Jogo Da Velha


joaohd

Posts Recomendados

Bom, é um jogo da velha em java feito totalmente por mim. Não possui interface gráfica, execute com o auxílio de um debugger.

 

/*Informação do pacote */
package jogodavelha;

/*Importação de bibliotecas*/
import java.util.Scanner;

public class JogoDaVelha {

   //Função para mostrar o tabuleiro
       public static void MostraTabuleiro(String[][] x) {
           System.out.println();
           /*Varrer as linhas*/
           for(int l = 0; l < x.length; l++) { 
               /*Varrer as colunas*/
               for(int c = 0; c < x.length; c++) {
                   /*Exibir a matriz*/
                   System.out.print(x[l][c]+ "\t");
               }
               System.out.println("\n");
           }
           System.out.println();
   }

   //Função para verificar ganhador
   public static String VerificaGanhador(String[][] x, Integer j) {
       String[] Tab = new String[8];
       String Win = "null";

       /*Se jogadas = 9, vencedor é velha*/
       if(j == 9) {
           Win = "Velha";
       }

       //Linhas
       Tab[0] = x[0][0] + x[0][1] + x[0][2];
       Tab[1] = x[1][0] + x[1][1] + x[1][2];
       Tab[2] = x[2][0] + x[2][1] + x[2][2];

       //Colunas
       Tab[3] = x[0][0] + x[1][0] + x[2][0];
       Tab[4] = x[0][1] + x[1][1] + x[2][1];
       Tab[5] = x[0][2] + x[1][2] + x[2][2];

       //Diagonais
       Tab[6] = x[0][0] + x[1][1] + x[2][2];
       Tab[7] = x[0][2] + x[1][1] + x[2][0];

       /*Varrer o vetor Tab, procurando por sequencias iguais de X ou O*/
       for(int i = 0; i < Tab.length; i++) {
          /*Se padrao XXX for encontrado, vencedor = player 1*/ 
          if(Tab[i].equals("XXX")) {
              Win = "Player 1";
          /*Se padrao OOO for encontrado, vencedor = player 2*/
          } else if(Tab[i].equals("OOO")) {
              Win = "Player 2";
          }
       }
       /*Retorna o vencedor. Caso nao foram encontrados os padrões e tabuleiro cheio, velha. 
        * se Nao foram encontrados os padroes e tabuleiro ainda vazio, nulo
        * Senao vencedor = player 1 ou player 2
        */
       return Win;
       }

   public static void main(String[] args) {
      String[][] Tabuleiro = new String[3][3];
      Integer Linha = 0;
      Integer Coluna = 0;
      Integer Valid = 0;
      Integer Jogadas = 0;

      Scanner in = new Scanner(System.in);

      //Inicializa o tabuleiro com "-"
      for(int i = 0; i < 3; i++){
          for(int x = 0; x < 3; x++){
              Tabuleiro[i][x] = "-";
          }
      }

      //Inicia as jogadas enquanto não houver ganhador
      while(true) { //Loop infinito
          //Inicializa e autentica jogada do jogador 1
          do {
               System.out.println("Jogador 1, vamos lá. Informe a linha: ");
               Linha = in.nextInt();

               while(Linha < 0 || Linha > 2) {
	    System.out.println("Esta linha é inválida!.");
                   System.out.println("Jogador 1, vamos lá. Informe a linha: ");
                   Linha = in.nextInt();
               }

               System.out.println("Jogador 1, vamos lá. Informe a coluna: ");
               Coluna = in.nextInt();

               while(Coluna < 0 || Coluna > 2) {
                   System.out.println("Esta coluna é inválida!.");
                   System.out.println("Jogador 1, vamos lá. Informe a coluna: ");
                   Coluna = in.nextInt();
               }

               //Verificar se campo está vazio
               if(Tabuleiro[Linha][Coluna].equals("-")) {
                   Tabuleiro[Linha][Coluna] = "X";
                   Valid = 1;
               } else {
                   Valid = 0;
                   System.out.println("Jogada inválida. Tente novamente.");
	}

          } while(Valid == 0);

           //Verifica ganhador. Se não houver, jogador 2 joga
           Jogadas++;
           Valid = 0;
           MostraTabuleiro(Tabuleiro);

           if(!VerificaGanhador(Tabuleiro, Jogadas).equals("null")) {
               break;
           }


          //Inicializa e autentica jogada do jogador 2
          do {
               System.out.println("Jogador 2, vamos lá. Informe a linha: ");
               Linha = in.nextInt();

               while(Linha < 0 || Linha > 2) {
                   System.out.println("Esta linha é inválida!.");
                   System.out.println("Jogador 2, vamos lá. Informe a linha: ");
                   Linha = in.nextInt();
               }

               System.out.println("Jogador 2, vamos lá. Informe a coluna: ");
               Coluna = in.nextInt();

               while(Coluna < 0 || Coluna > 2) {
				System.out.println("Esta coluna é inválida!.");
                   System.out.println("Jogador 2, vamos lá. Informe a coluna: ");
                   Coluna = in.nextInt();
               }

               //Verifica se campo está vazio
               if(Tabuleiro[Linha][Coluna].equals("-")) {
                   Tabuleiro[Linha][Coluna] = "O";
                   Valid = 1;
               } else {
                   Valid = 0;
                   System.out.println("Jogada inválida. Tente novamente.");
               }

            } while(Valid == 0);

           //Verifica ganhador. Se não houver, jogador 1 joga
           Valid = 0;
           MostraTabuleiro(Tabuleiro);
           Jogadas++;

           if(!VerificaGanhador(Tabuleiro, Jogadas).equals("null")) {
               break;
           }

   }
      //Finaliza e exibe vencedor
System.out.println(VerificaGanhador(Tabuleiro, Jogadas) + " Vence!");
   }
}

 

 

flw

Editado por apocarai
Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...