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:
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.
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;
}