Ir ao conteúdo
  • Cadastre-se

Java jogo da forca - decrementar


Posts recomendados

Boa tarde!!

 

Estou fazendo um trabalho da faculdade e me surgiu um problema: Em um jogo da forca preciso decrementar as letras digitadas erradamente pelo usuário. Na minha lógica isso acontece normalmente, mas caso a mesma letra seja digitada novamente, isso não deveria ocorrer e deveria aparecer uma mensagem de "Letra já Digitada". Poderiam me ajudar? Segue meu código:


 

package br.edu.fapi_prova;

import java.util.Scanner;

public class JogoDaForca {

    public void executaForca() {
        Scanner scanner = new Scanner(System.in);
        String palavra;
        int opcao = 0;

        System.out.println("Este é um jogo da forca. Deseja jogar? 1 - Sim || 2 - Não");
        opcao = scanner.nextInt();

        while (opcao == 1) {

            System.out.println("|------------------------------------|");
            System.out.println("|---------JOGO DA FORCA RONEI--------|");
            System.out.println("|------------------------------------|");
            System.out.println("");
            System.out.println("");

            System.out.println("Por favor, insira a palavra: ");
            palavra = scanner.next();
            System.out.println("");
            System.out.println("");
            System.out.println("");
            System.out.println("");
            System.out.println("");
            System.out.println("");
            System.out.println("");
            System.out.println("");
            System.out.println("");
            int cont;
            int letra = palavra.length();
            int erros = 5;
            char trocar[] = new char[letra];
            for (cont = 0; cont < letra; cont++) {
                trocar[cont] = '_';
                System.out.print(trocar[cont] + " ");
            }

            String palpite;
            char adivinhando[] = new char[letra];
            char adivinhaPalavra[] = new char[letra];
            int acertos = palavra.length();
            
            do {
                System.out.print("\nDigite uma letra: ");
                palpite = scanner.next();

                if (palavra.contains(palpite)) {
                    for (cont = 0; cont < letra; cont++) {
                        adivinhando[cont] = palpite.toCharArray()[0];
                        adivinhaPalavra[cont] = palavra.toCharArray()[cont];
                        if (adivinhando[cont] == adivinhaPalavra[cont]) {
                            trocar[cont] = adivinhando[cont];
                            acertos--;
                        }
                        
                        System.out.println("");
                        System.out.println("");
                        System.out.print(trocar[cont] + " ");
                        
                    }

                } else if (!palavra.contains(palpite)) {
                    erros--;

                }

                System.out.println("\nChances Restantes: " + erros);
            } while (acertos > 0 && erros > 0);
            if (acertos == 0) {
                System.out.println("");
                System.out.println("Parabéns!! Você Ganhou.");
                System.out.println("");
            }

            if (erros == 0) {
                System.out.println("");
                System.out.println("Que pena, você perdeu.");
                System.out.println("");
            }

            System.out.println("Deseja jogar novamente? 1 - Sim || 2 - Não");
            opcao = scanner.nextInt();

        }
        
        System.out.println("");
        System.out.println("");
        System.out.println("Ok!! Volte outra hora!!");

    }
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Você poderia concatenar as letras que já foram digitadas em uma string, por exemplo:

 

String Digitadas = "";
char Letra = scanner.next().charAt(0);

if(Digitadas.contains(Character.toString(Letra)))
	System.out.println("Letra já digitada");
else
{
  	//Procedimento pra verificação.
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

1 hora atrás, iHollyZinhO disse:

Você poderia concatenar as letras que já foram digitadas em uma string, por exemplo:

 


String Digitadas = "";
char Letra = scanner.next().charAt(0);

if(Digitadas.contains(Character.toString(Letra)))
	System.out.println("Letra já digitada");
else
{
  	//Procedimento pra verificação.
}

 

Pior que não ta rolando não :/

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Ronei2018 Olá. Poderia criar uma lista, dessa forma:

List<Character> letrasUsadas = new ArrayList<>();

Definir a variável palpite como um char:

char palpite;

E aí no loop fazer o seguinte:

System.out.print("\nDigite uma letra: ");
palpite = scanner.next().charAt(0);

if (letrasUsadas.contains(palpite)) {
    System.out.println("\nERRO: Essa letra ja foi usada!");
    continue;
}
                
letrasUsadas.add(palpite);

Experimenta para ver se vai. Aqui ficou ok

adicionado 20 minutos depois

resumidamente, o jogo ficaria assim:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Aplicacao {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        String palavra;
        int opcao = 0;
        int erros = 5;
        char palpite;
        boolean correto;

        List<Character> letrasUsadas = new ArrayList<>();

        System.out.println("Este é um jogo da forca. Deseja jogar? 1 - Sim || 2 - Não");
        opcao = scanner.nextInt();

        while (opcao == 1) {

            System.out.println("|------------------------------------|");
            System.out.println("|---------JOGO DA FORCA RONEI--------|");
            System.out.println("|------------------------------------|");
            System.out.println("");
            System.out.println("");

            System.out.print("Por favor, insira a palavra: ");
            palavra = scanner.next();

            int acertos = palavra.length();

            System.out.println("\n\n\n\n");
            System.out.println("\n\n");

            char trocar[] = new char[palavra.length()];

            for (int i = 0; i < palavra.length(); i++) {
                trocar[i] = '_';
            }

            do {

                for (int i = 0; i < palavra.length(); i++) {
                    System.out.print(trocar[i] + " ");
                }

                System.out.println();

                System.out.print("\nDigite uma letra: ");
                palpite = scanner.next().charAt(0);

                if (letrasUsadas.contains(palpite)) {
                    System.out.println("\nERRO: Essa letra ja foi usada!");
                    continue;
                }

                letrasUsadas.add(palpite);

                correto = false;
                for (int i = 0; i < palavra.length(); i++) {
                    if (palavra.charAt(i) == palpite) {
                        acertos--;
                        trocar[i] = palpite;
                        correto = true;
                    }
                }
                if(!correto) {
                    erros--;
                    System.out.println("\nChances Restantes: " + erros);
                }

            } while (acertos > 0 && erros > 0);

            if (acertos == 0) {
                System.out.println();
                System.out.println("Parabéns!! Você Ganhou.");
                System.out.println();
            }

            if (erros == 0) {
                System.out.println();
                System.out.println("Que pena, você perdeu.");
                System.out.println();
            }

            System.out.println("Deseja jogar novamente? 1 - Sim || 2 - Não");
            opcao = scanner.nextInt();

            letrasUsadas.clear();
        }

        System.out.println();
        System.out.println("\nOk!! Volte outra hora!!");
    }
}

Não sei se é a melhor coisa a fazer passar o código pronto :confused:

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!