Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@ out/
!**/src/main/**/out/
!**/src/test/**/out/

##File contaning bytecode java
*.class

##Building dirctories
target/
build/


### Eclipse ###
.apt_generated
.classpath
Expand All @@ -26,4 +34,4 @@ bin/
.vscode/

### Mac OS ###
.DS_Store
.DS_Store
12 changes: 10 additions & 2 deletions src/JogoDaForca.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,24 @@
import java.util.Scanner;
import boneco.Toy;
import boneco.ToyBuilder;

public class JogoDaForca {

public static void main(String[] args) {


Toy toy = ToyBuilder.buildToy();

Scanner scan = new Scanner(System.in);

Player player = new Player();

//Toy toy = ToyBuilder.drawToy();

String playerName = player.setName();
System.out.println("Ola, "+playerName+". Bem vindo(a) ao Jogo da Forca.");
System.out.println("Acerte o animal com menos de 7 erros.");


while (true){

Expand All @@ -22,8 +30,8 @@ public static void main(String[] args) {
String hiddenWord = dealWord.buildHiddenWord(gameWord);

LetterDealer dealLetter = new LetterDealer();
dealLetter.guessLetter(gameWord,wordNumLetters,hiddenWord);

dealLetter.guessLetter(gameWord,wordNumLetters,hiddenWord, toy);
System.out.println("O animal era: "+ gameWord);
System.out.println("Deseja jogar novamente? s/n");
String reapet = scan.next();
Expand Down
110 changes: 86 additions & 24 deletions src/LetterDealer.java
Original file line number Diff line number Diff line change
@@ -1,46 +1,108 @@
import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class LetterDealer{
void guessLetter(String gameWord, int wordNumLetters, String hiddenWord){
import boneco.Toy;
import boneco.ToyBuilder;

char[] ch = gameWord.toLowerCase().toCharArray();
char[] chHidden = hiddenWord.toCharArray();

int rightLetters=0;
int numTrys=7;

while (true){
public class LetterDealer {
void guessLetter(String gameWord, int wordNumLetters, String hiddenWord, Toy toy) {

Scanner scan = new Scanner(System.in); //Initiatize out from While loop

char[] ch = gameWord.toLowerCase().toCharArray();
char[] chHidden = hiddenWord.toCharArray();

List<String> wrongLetters = new ArrayList<>();
int rightLetters = 0;
int numTrys = 7;
int erro = 0;

boolean victory = false;
char letter;

while (true) {

boolean letterWasRight = false;
char letter;

Scanner scan = new Scanner(System.in);
try{

System.out.println("\nChute uma letra: ");
System.out.println("Chute uma letra: ");
letter = scan.nextLine().toLowerCase().charAt(0);

for (int i=0; i<ch.length; i++) {
if(!checkInput(letter)){
System.out.println("So aceitamos letras (a-Z)");
continue;
}

}
catch(StringIndexOutOfBoundsException e){
System.out.println("Entrada Invalida. Digite uma letra (a-A)");
continue;
}
catch(Exception e){
System.out.println("ERRO INESPERADO");
continue;
}

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

//Prevents counting the same correct letter twice

if (ch[i] == letter){
chHidden[i] = letter;
rightLetters++;
letterWasRight = true;
if (ch[i] == letter) {
if(chHidden[i] == '_'){
chHidden[i] = letter;
rightLetters++;
}
letterWasRight = true;
}
System.out.print(chHidden[i] + " ");
}

if (!letterWasRight) {

erro++;
toy.drawToy(erro);


// CHAR -> STRING (letter value)
String guessedInput = String.valueOf(letter);

//User's trying enter a same letter of wrongList elements
if (wrongLetters.contains(guessedInput)) {
System.out.println("\nOps, esta letra já foi escolhida: " + guessedInput);
} else {
wrongLetters.add(guessedInput);
numTrys--;
}
System.out.print(chHidden[i]);
}

if (!letterWasRight) numTrys--;
System.out.println("\nLetras erradas: " + String.join(", ", wrongLetters));
if (numTrys > 0 ){
System.out.println("Você tem mais " + numTrys + " tentativas.");
}

if (rightLetters == wordNumLetters) {
if (erro == 0){
System.out.println("\nParabéns, você acertou a palavra sem um único erro!");

} else {
System.out.println("\nParabéns, você acertou :)");
}
break;

System.out.println("\nVocê tem mais "+numTrys+" tentativas.");
if (rightLetters == wordNumLetters){
System.out.println("\nParabens, você acertou :)");
break;
} else if (numTrys<=0) {
} if (numTrys <= 0) {
System.out.println("\nPoxa, suas chances acabaram :(");
break;
break;
}
}

}
}
private static boolean checkInput(char letter){
return Character.isLetter(letter);
}

}
96 changes: 96 additions & 0 deletions src/boneco/Toy.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
package boneco;

public class Toy {

// Rope default
String rope;


String head;

String body;

//Legs
String leftlegs;
String rightlegs;

//Arms
String leftarms;
String rightarms;

public Toy(String rope, String head, String body,
String leftlegs, String rightlegs,
String leftarms, String rightarms) {

this.rope = rope;
this.head = head;
this.body = body;

this.leftlegs = leftlegs;
this.rightlegs = rightlegs;

this.leftarms = leftarms;
this.rightarms = rightarms;
}

public void drawToy(int erros) {
System.out.println("\n" + rope);

switch(erros){

case 1:
System.out.println(" " + head);
break;

case 2:
System.out.println(" " + head);
System.out.println(" " + body);

break;

case 3:
System.out.println(" " + head);
System.out.println(" " + body);

System.out.println(" " + leftlegs);

break;

case 4:

System.out.println(" " + head);
System.out.println(" " + body);

System.out.println(" "+ leftlegs + " " + rightlegs);

//System.out.println(leftarms);

break;

case 5:
System.out.println(" " + head);
System.out.println(" " + leftarms + body);
System.out.println(" " + leftlegs + " " + rightlegs);
break;

case 6:
System.out.println(" " + head);
System.out.println(" " + leftarms + body + rightarms);
System.out.println(" " + leftlegs + " " + rightlegs);
break;

case 7:
System.out.println(" " + "X");
System.out.println(" " + leftarms + body + rightarms);
System.out.println(" " + leftlegs + " " + rightlegs);

System.out.println("\nGAME OVER\n O boneco foi enformado! ");
break;
default:
System.out.println("\nValor inválido: número de erros fora do intervalo (0 a 7).");
break;
}


}
}
41 changes: 41 additions & 0 deletions src/boneco/ToyBuilder.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@

package boneco;

public class ToyBuilder {

public static void main(String[] args) {

}

//Method to return an object
public static Toy buildToy(){
String rope = "\n----------------------|";
String head = "O";
String body = "|";

//Legs
String leftlegs = "/";
String rightlegs = "\\";

//arms
String leftarms = "/";
String rightarms = "\\";


// Building toy
Toy toy = new Toy(
rope,
head,
body,
leftlegs,
rightlegs,
leftarms,
rightarms
);

//toy.drawToy(6);

return toy;
}
}