Advertisement
LightProgrammer000

Jogo da Velha (One Vs One)

Jul 14th, 2024
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.98 KB | None | 0 0
  1. package Tarefas_3;
  2.  
  3. public class EX00
  4. {
  5.     public static void main(String[] args)
  6.     {
  7.         try
  8.         {
  9.             exec();
  10.         }
  11.        
  12.         catch (Exception e)
  13.         {
  14.             System.out.println(e.getMessage());
  15.         }
  16.     }
  17.    
  18.     private static void exec()
  19.     {
  20.         int lin, col, contJog = 1;
  21.         char jog = 'X', ven = 'Z';
  22.  
  23.         int aux[] = new int[2];
  24.         char tab[][] = new char[3][3];
  25.  
  26.         // Apresentacao do tabuleiro
  27.         apresentacao(populacao(tab));      
  28.  
  29.         // Estrutura: Vitoria ou Empate
  30.         while (ven != 'E' && ven != 'X' && ven!= 'O')
  31.         {
  32.             System.out.format("\n----- ROUND %d -----\n", contJog);
  33.             System.out.printf("\n# Jogador %c \n", jog);
  34.  
  35.             aux = entDados();
  36.             lin = aux[0] - 1;
  37.             col = aux[1] - 1;
  38.  
  39.             if (contJog > 1 && (tab[lin][col] == 'X' || tab[lin][col] == 'O'))
  40.             {
  41.                 System.out.println("# Jogada invalida !");
  42.             }
  43.  
  44.             // Analise: Realizaca da troca do jogador
  45.             else
  46.             {
  47.                 if (jog == 'X')
  48.                 {
  49.                     tab[lin][col] = 'X';
  50.                     jog = 'O';
  51.                 }
  52.  
  53.                 else
  54.                 {
  55.                     tab[lin][col] = 'O';
  56.                     jog = 'X';
  57.                 }
  58.  
  59.                 // Contador de Jogadas
  60.                 contJog++;  
  61.             }
  62.  
  63.             // Tabuleiro
  64.             apresentacao(tab);
  65.  
  66.             // Analise
  67.             ven = analiseJogo(contJog, tab);
  68.            
  69.             if (ven == 'E' || ven == 'X' || ven == 'O')
  70.             {
  71.                 System.out.printf("# %s \n", relatorio(ven));                
  72.             }            
  73.         }  
  74.     }
  75.  
  76.     // Inserir valores
  77.     private static int [] entDados()
  78.     {
  79.         int map[] = new int[2];
  80.         boolean flag = Boolean.TRUE;
  81.        
  82.         do
  83.         {
  84.             System.out.print("# Linha: ");
  85.             map[0] = Integer.parseInt(System.console().readLine());
  86.  
  87.             System.out.print("# Coluna: ");
  88.             map[1] = Integer.parseInt(System.console().readLine());
  89.        
  90.             if ( (map[0] >= 1 && map[0] <= 3) && (map[1] >= 1 && map[1] <= 3) )
  91.             {
  92.                 flag = false;
  93.             }
  94.            
  95.             else
  96.             {
  97.                 System.out.println("\n# Preencha novamente !");
  98.             }
  99.            
  100.         } while(flag);
  101.        
  102.         return map;
  103.     }
  104.    
  105.     // Metodo: Apresentação do Tabuleiro
  106.     private static void apresentacao(char tab[][])
  107.     {
  108.         System.out.println("\n### TABULEIRO ###");
  109.        
  110.         for (int i = 0; i < 3; i++)
  111.         {
  112.             for (int j = 0; j < 3; j++)
  113.             {
  114.                 System.out.printf(" %c ", tab[i][j]);
  115.                
  116.                 if (j != 2)
  117.                 {
  118.                     System.out.print(" | ");
  119.                 }
  120.  
  121.                 else
  122.                 {
  123.                     System.out.print("  \n");
  124.                 }
  125.             }
  126.         }
  127.         System.out.print("#################\n");
  128.     }
  129.  
  130.     // Funcao: População do Tabuleiro
  131.     private static char [][] populacao(char tab[][])
  132.     {
  133.         for (int i = 0; i < 3; i++)
  134.         {
  135.             for (int j = 0; j < 3; j++)
  136.             {
  137.                 tab[i][j] = '-';
  138.             }
  139.         }
  140.  
  141.         return tab;
  142.     }
  143.  
  144.     // Funcao: Empate e Vitoria
  145.     private static char analiseJogo(int contJog, char tab[][])
  146.     {
  147.         // Empate
  148.         if (contJog > 9)
  149.         {
  150.             return 'E';
  151.         }
  152.        
  153.         else
  154.         {
  155.             // Vitoria: Linhas Horizontais
  156.             for (int k = 0; k < 3; k++)
  157.             {
  158.                 if ( (tab[k][0] == tab[k][1]) && (tab[k][1] == tab[k][2]) )
  159.                 {
  160.                     return tab[k][0];    
  161.                 }
  162.            
  163.                 else if ( (tab[0][k] == tab[1][k]) && (tab[1][k] == tab[2][k]) )
  164.                 {
  165.                     return tab[0][k];                
  166.                 }
  167.             }
  168.            
  169.             // Vitoria: Linhas Diagonal
  170.             if ((tab[0][0] == tab [1][1]) && (tab[1][1] == tab[2][2]))
  171.             {
  172.                 return tab[0][0];                
  173.             }
  174.            
  175.             if ((tab[0][2] == tab[1][1]) && (tab[1][1] == tab[2][0]))
  176.             {
  177.                 return tab[0][2];
  178.             }            
  179.         }
  180.  
  181.         return 'Z';
  182.     }
  183.    
  184.     // Funcao: Relatorio
  185.     private static String relatorio(char ven)
  186.     {
  187.         switch (ven)
  188.         {
  189.             case 'E':
  190.                 return "Empate";
  191.            
  192.             case 'X':
  193.                 return "Venceu jogador X";
  194.            
  195.             case 'O':
  196.                 return "Venceu jogador O";
  197.            
  198.             default:
  199.                 return "";
  200.         }
  201.     }
  202. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement