Ajuda ai pessoal

Boas pessoal preciso de ajuda para fazer o “jogo da Forca”, parecendo muito basico para mim que estou a comecar agora é algo ja bastante complexo, a questao é que tem algumas regras:
Todo o jogo tem de ser escrito em metodos
o jogo so aceita um caracter de uma vez
Alguem me consegue ajudar estou em fim de semestre e esta foda acabar este trabalho e ter a cadeira feita:

1 curtida

Ajudar em que exatamente? Qual sua dúvida?

Basicamente tenho de fazer o programa com estes metodos com a funçao pedida e nao estou a consegyuir passar do metodo “eLetra” comecei a tentar fazer o metodo seguinte mas nao consigo perceber como fazer,

static String escolhePalavraChave( )
pede ao utilizador a palavra chave, testa se está tudo bem, e retorna a
palavra escolhida. A palavra retornada deve estar toda em maiúsculas.
static boolean ePalavraValida( String str )
testa se a palavra pode ser usada. Tem de ter 5 caracteres, no mínimo, e
serem todos letras.
static boolean eLetra( char ch )
testa se o caracter ch é uma letra.
static char pedeLetraNova( char usadas[], int nUsadas )
pede uma letra nova e retorna a letra. Deve fazer os testes se é uma letra
e se já foi usada. Só aceita a letra após passar os testes.
static boolean jaUsada( char letra, char []usadas, int nUsadas )
verifica se uma letra já foi usada em tentativas anteriores.
static void atualizarAdivinha(String chave, char[] atual, char letra)
Atualiza a palavra atual. Esta palavra representa a palavra parcialmente
adivinhada. Terá de substituir todos os – na palavra pela letra na posição
correta.
static boolean acertou(String chave, char[] atual)
testa se a palavra atual é igual à chave introduzida.
static String getBoneco(int nErros)
devolve o boneco associado ao número de erros.

Mas não tem nada implementado. E como assim está em fim de semestre?

Poste todos os códigos que você já fez e qual a sua dúvida em relação a ele para podermos ajudar.

Basicamente fiz isto tenho de fazer um metodo que verifique se a letra posta pelo utilizador ja foi posta pelo utilizador numa tentativa anterior, um metodo para atualizar a palavra, um metodo que mostre o boneco da forca e um que verifique se a palavra descoberta é igual

import java.util.Scanner;

public class enforcado1 {

static Scanner teclado = new Scanner(System.in);

static String escolhePalavraChave(String palavra) {

	System.out.println("Bem vindo ao Jogo O Enforcado");
	do {	
		System.out.print("Por favor digite uma palavra com 5 ou mais letras: ");
		palavra = teclado.next();
		palavra = palavra.toUpperCase();

	}while (!ePalavraValida(palavra));
	System.out.println(palavra);
	return palavra;
}
static boolean ePalavraValida(String palavra) {
if (palavra.length() <5 )
		return false;
	for (int i=0; i< palavra.length(); i++) {
		if (palavra.charAt(i)<'A'||palavra.charAt(i)>'Z' ) 
			return false;
	}
return true;
}
static boolean eletra (char tentativa) {
	if (tentativa>1)
		return false;

if (tentativa<‘A’||tentativa>‘Z’ )

	return true;		
return false;		}	
static char pedeLetraNova( char tentativa ) {

do {
System.out.println(“Introduza a sua tentativa:”);
tentativa = teclado.next().charAt(0);
tentativa = Character.toUpperCase(tentativa);
if(!eletra(tentativa))
System.out.println(“Tentativa inválida, escolha outra!”);

System.out.println(tentativa);	
	}

while (!eletra(tentativa));
;

	return tentativa;

}
static boolean jaUsada( char tentativa) {
	int nUsadas = 0; 
	char []usadas= {67};

for (int i=0; i==usadas.length;i++) {
if(i==usadas.length) {
nUsadas++;
usadas[nUsadas]=tentativa;
System.out.println(nUsadas);
return false;
}
}
return true;
}
public static void main(String[] args) {

	String palavra = " ";
	char tentativa = 0;

	
	
	palavra = escolhePalavraChave(palavra);
	
	tentativa=pedeLetraNova(tentativa);

}

}

Porque o metodo que tenho ai feito para verificar se a letra ja foi usada nao esta a funcionar

Desculpe, confundi o que o método faz por conta do nome,

O que realmente você queria que esse método fizesse? Pois ele está uma mistura de adicionar a letra à última palavra com uma “comparação” para descobrir se a letra já foi utilizada ou não.

1 curtida

Eu quero é mesmo adicionar a tentativa ao array de char [nUsadas]

static boolean jaUsada( char tentativa) {
char []usadas= {67};

for (int i=0; i<=usadas.length;i++) {

if(usadas[i] == tentativa) { //Verifica se a letra já foi utilizada {
    
    System.out.println("Letra já utilizada");
    return false;

}
}

usadas[usadas.length+1] = tentativa; //Caso não tenha sido utilizada ela é adicionada no final 

return true;

}

Isso da erro de execuçao na linha onde se adiciona ao usadas.length + 1

Tente da seguinte forma:

static boolean jaUsada( char tentativa) {
char []usadas= {67};

for (int i=0; i<usadas.length;i++) {

if(usadas[i] == tentativa) { //Verifica se a letra já foi utilizada {
    
    System.out.println("Letra já utilizada");
    return false;

}
}

usadas[usadas.length] = tentativa; //Caso não tenha sido utilizada ela é adicionada no final 

return true;

}