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 correctLetters;
private List 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!"); }
}
}