package forcap2;
public class Aplicacao {
private Aplicacao() {}
public static void main(String[] args) {
Dicionario dicionario = new DicionarioArray();
Forca forca = new ForcaConsole(dicionario);
forca.play();
}
}
package forcap2;
public interface Dicionario {
public String sorteio();
}
package forcap2;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Random;
import java.util.Scanner;
public class DicionarioArray implements Dicionario {
String[] Palavras;
public void DicionarioArray(String[] args) {
String[] Leitor;
File arq = new File("Pala.txt");
try {
Scanner entrada = new Scanner(arq);
Leitor = entrada.nextLine().split(" ");
Palavras = Leitor;
for(int i = 0; i < Leitor.length; i++) {
System.out.println(Leitor[i]);
}
} catch (FileNotFoundException ex) {
System.out.println("A Palavra não exixte!");
}
}
@Override
public String sorteio() {
String[] Leitor;
File arq = new File("src\\forcap2\\Pala.txt");
try {
Scanner entrada = new Scanner(arq);
Leitor = entrada.nextLine().split(" ");
Palavras = Leitor;
Random random = new Random();
int index = random.nextInt(Palavras.length);
return Palavras[index];
}
// System.out.println(entrada.nextLine());
catch (FileNotFoundException ex) {
System.out.println("A Palavra não exixte!");
}
return null;
}
}
package forcap2;
import java.util.ArrayList;
import java.util.List;
public abstract class Forca {
private final int TempoMax = 10;
private int Tentativas;
private final Dicionario dicionario;
private List<Character> correctLetters;
private List<Character> incorrectLetters;
private String PalavraSecreta;
public Forca(Dicionario dicionario) {
this.dicionario = dicionario;
}
public abstract void play();
protected void initialize() {
PalavraSecreta = dicionario.sorteio();
correctLetters = new ArrayList<>();
for(int i = 0; i < this.PalavraSecreta.length(); i++) {
correctLetters.add('_');
}
incorrectLetters = new ArrayList<>();
Tentativas = 1;
}
protected void check(char letter) {
boolean Checarsecreta = false;
Tentativas = Tentativas + 1;
for (int i = 0; i < PalavraSecreta.length(); i++) {
if (PalavraSecreta.charAt(i) == letter) {
Checarsecreta = true;
correctLetters.set(i, letter);
}
}
if (!Checarsecreta) {
incorrectLetters.add(letter);
}
}
protected boolean LetraRepetida(char letter) {
return correctLetters.contains(letter) || incorrectLetters.contains(letter);
}
protected boolean PerdeuJogo() {
return Vitoria() || Derrota();
}
protected boolean Derrota() {
return incorrectLetters.size() == TempoMax;
}
protected boolean Vitoria() {
return !correctLetters.contains('_');
}
protected int getTentativas() {
return Tentativas;
}
protected String getCorrectLetters() {
StringBuilder out = new StringBuilder();
for(int i = 0; i < correctLetters.size(); i++) {
out.append(correctLetters.get(i));
out.append(" ");
}
return out.toString();
}
protected String getIncorrectLetters() {
int i = 0;
StringBuilder out = new StringBuilder();
for(; i < incorrectLetters.size(); i++) {
out.append(incorrectLetters.get(i));
out.append(" ");
}
for(; i < TempoMax; i++) {
out.append("_");
out.append(" ");
}
return out.toString();
}
protected String getPalavraSecreta() {
StringBuilder out = new StringBuilder();
for(int i = 0; i < PalavraSecreta.length(); i++) {
out.append(PalavraSecreta.charAt(i));
out.append(" ");
}
return out.toString();
}
}
package forcap2;
import java.util.Scanner;
public class ForcaConsole extends Forca {
public ForcaConsole(Dicionario dicionario) {
super(dicionario);
}
@Override
public void play() {
try (Scanner scanner = new Scanner(System.in)) {
boolean readInput = true;
String input = null;
initialize();
while(!PerdeuJogo()) {
System.out.println("Tentativa : " + getTentativas());
System.out.println("Palavra : " + getCorrectLetters());
System.out.println("Forca : " + getIncorrectLetters());
readInput = true;
input = null;
while(readInput) {
System.out.print("Letra : ");
input = scanner.nextLine().toUpperCase();
if (
(input == null) ||
(input.length() == 0) ||
(!Character.isAlphabetic(input.codePointAt(0)))
) {
System.out.println("Erro : forneça um letra válida!");
} else if (LetraRepetida(input.charAt(0))) {
System.out.println("Erro : letra já fornecida!");
} else {
readInput = false;
}
}
check(input.charAt(0));
System.out.println();
}
}
System.out.println("Tentativa : " + getTentativas());
System.out.println("Palavra : " + getPalavraSecreta());
System.out.println("Forca : " + getIncorrectLetters());
if(Vitoria()) {
System.out.println("Parabéns! Você descobriu!");
} else {
System.out.println("Desculpa, não foi dessa vez!");
}
}
}