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.
- 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?
- Essa frase é trazida para o jogo como String, tem como fazê-lo como um char?
- 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();