Advertisement
LightProgrammer000

Jogo da Forca (2)

Jul 18th, 2024
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.91 KB | None | 0 0
  1. package Aula;
  2.  
  3. import java.util.List;
  4. import java.util.Arrays;
  5. import java.util.ArrayList;
  6. import java.util.Random;
  7. import java.util.Scanner;
  8.  
  9. public class EX26
  10. {
  11.     public static void main(String[] args)
  12.     {
  13.         try (Scanner ent = new Scanner(System.in))
  14.         {
  15.             // Lista de caracteres
  16.             List<Character> lista = new ArrayList<>();
  17.  
  18.             // Variaveis
  19.             int erro = 0;
  20.             char letra;
  21.  
  22.             // Vetores
  23.             char [] palavra = sorteioPalavra();
  24.             char [] tabuleiro = montagemTabuleiro(palavra);
  25.  
  26.             // Analise: erro < 7 e palavra diferente da do tabuleiro
  27.             while (erro < 7 && !Arrays.equals(tabuleiro, palavra))
  28.             {
  29.                 // Chamada de metodo
  30.                 mostrarTabuleiro(tabuleiro);
  31.  
  32.                 System.out.print("\n# Letra: ");
  33.                 letra = inserirLetra(ent);
  34.  
  35.                 if (acertou(palavra, letra))
  36.                 {
  37.                     tabuleiro = atualizaTabuleiro(tabuleiro, palavra, letra);
  38.                 }
  39.  
  40.                 else
  41.                 {
  42.                     erro++;
  43.                 }
  44.  
  45.                 if (listaErros(lista, letra))
  46.                 {
  47.                     System.out.print("# Lista de letras escolhidas: ");
  48.                     apresentaListaErro(lista);
  49.                 }
  50.                
  51.                 //listaErros(lista, letra);
  52.                 System.out.println("-> Letras restantes: " + letrasRestantes(tabuleiro) + "\n");
  53.             }
  54.  
  55.             if (erro >= 7)
  56.             {
  57.                 System.out.println("# Voce perdeu !");
  58.             }
  59.  
  60.             else
  61.             {
  62.                 System.out.println("# Voce venceu !");
  63.                 System.out.printf("# Palavra: %s", mostrarPalavra(palavra) + "\n");  
  64.             }
  65.         }
  66.     }
  67.  
  68.     // Funcao: Retornando vetor com a palavra em caractere
  69.     private static char [] sorteioPalavra()
  70.     {
  71.         // Instanciação
  72.         Random rd = new Random();
  73.        
  74.         // Sorteando [1-10]
  75.         int sorteio = rd.nextInt(10) + 1;
  76.  
  77.         // Estrutura: Escolha do 'Array' pela variavel Random sorteio
  78.         switch (sorteio)
  79.         {
  80.             case 1:
  81.                 return new char [] {'U','V','A'};
  82.  
  83.             case 2:
  84.                 return new char [] {'B','A','N','A','N','A'};
  85.  
  86.             case 3:
  87.                 return new char [] {'A','B','A','C','A','X','I'};
  88.  
  89.             case 4:
  90.                 return new char [] {'M','A','N','G','A'};
  91.  
  92.             case 5:
  93.                 return new char [] {'M','A','R','A','C','U','J','A'};
  94.  
  95.             case 6:
  96.                 return new char [] {'L','A','R','A','N','J','A'};
  97.  
  98.             case 7:
  99.                 return new char [] {'M','O','R','A','N','G','O'};
  100.  
  101.             case 8:
  102.                 return new char[] {'L','I','M','A','O'};
  103.  
  104.             case 9:
  105.                 return new char [] {'A','C','E','R','O','L','A'};
  106.                
  107.             case 10:
  108.                 return new char [] {'C','A','Q','U','I'};
  109.  
  110.             default:
  111.                 break;
  112.         }
  113.  
  114.         return null;
  115.     }  
  116.  
  117.     // Funcao: Retornando a palavra escolhida
  118.     private static String mostrarPalavra(char[] palavra)
  119.     {
  120.         String word = "";
  121.  
  122.         for (int i = 0; i < palavra.length; i++)
  123.         {
  124.             word += palavra[i];
  125.         }
  126.  
  127.         return word;
  128.     }
  129.  
  130.     // Funcao: Retornando vetor com a montagem inicial do tabuleiro
  131.     private static char[] montagemTabuleiro(char[] palavra)
  132.     {
  133.         // Vetor auxiliar do tabuleiro
  134.         char [] aux = new char[palavra.length];
  135.  
  136.         for (int i = 0; i < palavra.length; i++)
  137.         {
  138.             aux[i] = '-';                                                
  139.         }
  140.        
  141.         return aux;        
  142.     }
  143.    
  144.     // Metodo: Mostrar o tabuleiro
  145.     private static void mostrarTabuleiro(char [] tabuleiro)
  146.     {
  147.         for (int i = 0; i < tabuleiro.length; i++)
  148.         {
  149.             System.out.format(" %c", tabuleiro[i]);
  150.         }
  151.     }
  152.  
  153.     // Funcao: Inserindo na lista as letras escolhidas
  154.     private static boolean listaErros(List<Character> lista, char letra)
  155.     {
  156.         if(!lista.contains(letra))
  157.         {
  158.             // Adiciona caracteres à lista
  159.             lista.add(letra);
  160.         }
  161.  
  162.         return true;
  163.     }
  164.    
  165.     // Metodo: Apresentacao da lista de letras escolhidas
  166.     private static void apresentaListaErro(List<Character> lista)
  167.     {
  168.         // Imprime os caracteres da lista
  169.         for (Character i : lista)
  170.         {
  171.             System.out.format(" %c ", i);
  172.         }
  173.     }
  174.  
  175.     // Funcao: Retorno de quando a letra esta em um das posicoes da palavra
  176.     private static boolean acertou(char[] palavra, char letra)
  177.     {
  178.         for (int i = 0; i < palavra.length; i++)
  179.         {
  180.             if (palavra[i] == letra)
  181.             {
  182.                 return true;
  183.             }
  184.         }
  185.  
  186.         return false;
  187.     }
  188.  
  189.     // Funcao: Atualizacao e a forma da apresentacao do tabuleiro
  190.     private static char[] atualizaTabuleiro(char[] tabuleiro, char [] palavra, char letra)
  191.     {
  192.         for (int i = 0; i < tabuleiro.length; i++)
  193.         {
  194.             if (palavra[i] == letra)
  195.             {
  196.                 tabuleiro[i] = letra;                
  197.             }  
  198.         }
  199.  
  200.         return tabuleiro;            
  201.     }
  202.    
  203.     // Funcao: Letras que ainda faltam serem adivinhadas
  204.     private static int letrasRestantes(char[] tabuleiro)
  205.     {
  206.         int count = 0;
  207.        
  208.         for (char i : tabuleiro)
  209.         {
  210.             if (i == '-')
  211.             {
  212.                 count++;
  213.             }
  214.         }
  215.    
  216.         return count;
  217.     }
  218.  
  219.     // Funcao: Insercao da letra
  220.     private static char inserirLetra(Scanner ent)
  221.     {
  222.         return Character.toUpperCase(ent.next().charAt(0));
  223.     }  
  224. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement