Jogo da Forca - métodos

1 resposta
D

Boa tarde,
tenho um desafio da facul pra fazer. Um jogo da forca. Ele busca a frase a partir de um arquivo txt, escolhe uma frase randomicamente e a coloca no jogo com traços para a pessoa descobrir qual a palavra.
Estou com algumas dúvidas.

  1. a partir do código que eu já desenvolvi como faço para imprimir os traços na tela sem que os espaços entre as palavras gerem traços também?
  2. Essa frase é trazida para o jogo como String, tem como fazê-lo como um char?
  3. A comparação entre a letra digitada e a letra da frase vai acontecer como um char ou como uma String?
    Alguns métodos ainda não estão implementados, mas já os coloquei no corpo do código para uma demanda do decorrer do desenvolvimento.
    abaixo o código.
    Obrigada a todos pela ajuda.
    Tenho tentado me desenvolver melhor em programação, mas ainda estou engatinhando.
import java.util.Random;   //permitirá o sorteio aleatório das frases

import java.util.Scanner;  //permitirá ao java trabalhar com textos

import java.util.ArrayList; //implementa array dinâmico

import java.io.FileReader;  //leitura de texto

import java.io.FileInputStream; //Abre arquivo criando fluxo de byte relacionado a arquivo

import java.io.FileNotFoundException;

import java.io.FileOutputStream; //Fecha arquivo encerrando fluxo de byte

import java.io.BufferedReader; //abertura de texto

import java.io.IOException; //classe de exceções

import java.io.RandomAccessFile;
public class JogoDaForca {

private char jogo;

private char[] frasesUsadas;
public JogoDaForca (){  //Construtor 
	
}

public String sorteiaFrase(){  //método para sortear a frase
	RandomAccessFile arquivo = null;  
	try {
		arquivo = new RandomAccessFile("C:/Meus Codigos/frases.txt", "rw");  //aponta para o arquivo txt e acessa randomicamente seu conteudo
	} catch (FileNotFoundException e) {  //trata a exceção caso não encontre o arquivo
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	String linha = null;
	ArrayList<Character> frases = new ArrayList<>(); //transfere o conteúdo do arquivo txt para um Array de Strings
	
	try { 
		linha = arquivo.readLine();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	
	while(linha != null){		//lê e adiciona a linha e passa para a próxima linha a ser lida
		frases.add(linha);
		try {
			linha = arquivo.readLine();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
		jogo = null;
	
	jogo = frases.get((int)(Math.random()*4));	//seleciona randomicamente a frase
	return jogo;
}

public void imprimeTraco(){
	for(int i = 0; i<jogo.length(); i++){
		System.out.println("_");
	}		
}



//método que copia a frase sorteada para um array de frases já utilizadas
public static void armazenaUsadas(String jogo){
	String[] frasesUsadas = new String[5];  
	for(int i = 0; i < frasesUsadas.length; i++){
		    frasesUsadas[i] = jogo;
    }
}
//fará a comparação entre a letra digitada e as letras da frase

public static String sequencial(String jogo, String letrasDigitadas) {

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

if (adivinhe[i] == letrasDigitadas) {

return i;

}

}
return -1;
}
//		

//	//método que mantém letras digitadas para que não sejam repetidas pelo usuário	

//	public static String binaria(String[] letrasDigitadas, String x) {

//		int inf = 0;

//		int sup = a.length - 1;

//		while (inf <= sup) {

//			int med = (inf + sup) / 2; // divisão inteira

//			if (x == letrasDigitadas[med])

//				return med;

//			else if (x < letrasDigitadas[med])

//				sup = med - 1; // procura na 1a. metade

//			else

//				inf = med + 1; // procura na 2a. metade

//		}

//		return -1;

//	}

//	

//

//	

//	

//	

//	//Trata exceção por não encontrar arquivo

//	//Mostrar na tela o numero de letras referente à frase

//	//substituir o traço por letra digitada

//	

//	

//	

//	

public static void main (String args []){
JogoDaForca jogo1 = new JogoDaForca();
	jogo1.sorteiaFrase();
	jogo1.imprimeTraco();

1 Resposta

D

O código q vc postou tem muitos problemas, faça um pouquinho e teste, se funcionar continue, se não, tente encontrar o problema e depois corrija.

Vc está tentando fazer o joguinho inteiro de uma unica vez, isso nunca dá certo.

O programa já consegue ler o arquivo? Tem certeza de q o sorteiaFrase funciona? Comece por essa parte.

1 - Não sei, a pergunta não faz sentido, está dizendo q as palavras geram traços mas não imagino como isso está acontecendo.

2 - Não como um char, mas como uma cadeia de caracteres, se a String só tem uma letra, então

char textoChar = textoString.charAt(0)

3 - Depende, provavelmente virá como String, mas é fácil converter para char, a comparação é mais simples se for char

Criado 21 de abril de 2016
Ultima resposta 22 de abr. de 2016
Respostas 1
Participantes 2