From 1dee2e8b8fc599b3f407bce1d785da3a6c94b45e Mon Sep 17 00:00:00 2001 From: Dorian Date: Mon, 29 Dec 2025 01:45:54 -0300 Subject: [PATCH 1/6] chore:adicionando arquivos/pastas em .gitignore --- .gitignore | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index f68d109..1c311b8 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,14 @@ out/ !**/src/main/**/out/ !**/src/test/**/out/ +##File contaning bytecode java +*.class + +##Building dirctories +target/ +build/ + + ### Eclipse ### .apt_generated .classpath @@ -26,4 +34,4 @@ bin/ .vscode/ ### Mac OS ### -.DS_Store \ No newline at end of file +.DS_Store From 3db701ca776b62f52cd381eff8bfc264472baf8d Mon Sep 17 00:00:00 2001 From: Dorian Date: Mon, 29 Dec 2025 05:27:47 -0300 Subject: [PATCH 2/6] =?UTF-8?q?Adicionando=20espa=C3=A7o=20de=20palavras?= =?UTF-8?q?=20erradas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/LetterDealer.java | 63 ++++++++++++++++++++++++++++--------------- 1 file changed, 42 insertions(+), 21 deletions(-) diff --git a/src/LetterDealer.java b/src/LetterDealer.java index c5d83ba..d00ce7e 100644 --- a/src/LetterDealer.java +++ b/src/LetterDealer.java @@ -1,46 +1,67 @@ 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){ +public class LetterDealer { + void guessLetter(String gameWord, int wordNumLetters, String hiddenWord) { + Scanner scan = new Scanner(System.in); //Initiatize out from While loop char[] ch = gameWord.toLowerCase().toCharArray(); char[] chHidden = hiddenWord.toCharArray(); + + List wrongLetters = new ArrayList<>(); - int rightLetters=0; - int numTrys=7; + int rightLetters = 0; + int numTrys = 7; - while (true){ + while (true) { boolean letterWasRight = false; char letter; - Scanner scan = new Scanner(System.in); - - System.out.println("\nChute uma letra: "); + System.out.println("Chute uma letra: "); letter = scan.nextLine().toLowerCase().charAt(0); - for (int i=0; i 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)); + System.out.println("Você tem mais " + numTrys + " tentativas."); - System.out.println("\nVocê tem mais "+numTrys+" tentativas."); - if (rightLetters == wordNumLetters){ - System.out.println("\nParabens, você acertou :)"); + if (rightLetters == wordNumLetters) { + System.out.println("\nParabéns, você acertou :)"); break; - } else if (numTrys<=0) { + } else if (numTrys <= 0) { System.out.println("\nPoxa, suas chances acabaram :("); break; } - } - } + } + } } From ce52ea950aa9c81558bc9afd3c4e7e374f20eb5b Mon Sep 17 00:00:00 2001 From: Dorian Date: Wed, 31 Dec 2025 02:52:44 -0300 Subject: [PATCH 3/6] =?UTF-8?q?feat:=20Fun=C3=A7=C3=A3o=20geral=20de=20Ent?= =?UTF-8?q?rada?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/LetterDealer.java | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/src/LetterDealer.java b/src/LetterDealer.java index d00ce7e..46b6367 100644 --- a/src/LetterDealer.java +++ b/src/LetterDealer.java @@ -11,18 +11,35 @@ void guessLetter(String gameWord, int wordNumLetters, String hiddenWord) { char[] chHidden = hiddenWord.toCharArray(); List wrongLetters = new ArrayList<>(); - - int rightLetters = 0; + int rightLetters = 0; int numTrys = 7; + char letter; - while (true) { + while (true) { + boolean letterWasRight = false; - char letter; + + try{ System.out.println("Chute uma letra: "); letter = scan.nextLine().toLowerCase().charAt(0); + 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 @@ -64,4 +81,8 @@ void guessLetter(String gameWord, int wordNumLetters, String hiddenWord) { } } + private static boolean checkInput(char letter){ + return Character.isLetter(letter); + } + } From 2aabd6a314632c3cccd75a788aeadc6af29796f6 Mon Sep 17 00:00:00 2001 From: Dorian Date: Thu, 1 Jan 2026 23:59:25 -0300 Subject: [PATCH 4/6] Criando boneco --- src/boneco/Toy.java | 102 +++++++++++++++++++++++++++++++++++++ src/boneco/ToyBuilder.java | 35 +++++++++++++ 2 files changed, 137 insertions(+) create mode 100644 src/boneco/Toy.java create mode 100644 src/boneco/ToyBuilder.java diff --git a/src/boneco/Toy.java b/src/boneco/Toy.java new file mode 100644 index 0000000..a5aee79 --- /dev/null +++ b/src/boneco/Toy.java @@ -0,0 +1,102 @@ +package boneco; + +public class Toy { + + // Corda + String rope; + + + String head; + + String body; + + //Pernas + String leftlegs; + String rightlegs; + + //Braços + 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(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); + + //System.out.println(leftarms); + + break; + + case 6: + + System.out.println(head); + System.out.println(body); + + System.out.println(rightlegs + leftlegs); + + System.out.println(leftarms + rightarms); + + break; + default: + + System.out.println("\nParabéns por acertar todas as letras sem um único erro"); + break; + } + + + + //System.out.println(leftlegs + leftarms); + + } +} diff --git a/src/boneco/ToyBuilder.java b/src/boneco/ToyBuilder.java new file mode 100644 index 0000000..29c240f --- /dev/null +++ b/src/boneco/ToyBuilder.java @@ -0,0 +1,35 @@ + +package boneco; + +public class ToyBuilder { + + public static void main(String[] args) { + + String rope = "----------------------|"; + String head = " O"; + String body = " |"; + + //PERNAS + String leftlegs = " /"; + String rightlegs = " \\"; + + //BRAÇOS + String leftarms = "———"; + String rightarms = "———"; + + // Construção do boneco + Toy toy = new Toy( + rope, + head, + body, + leftlegs, + rightlegs, + leftarms, + rightarms + ); + + toy.drawToy(5); + + } +} + From 62433b376f881c0e42948665ef2e1b40450ee43b Mon Sep 17 00:00:00 2001 From: Dorian Date: Fri, 2 Jan 2026 18:00:18 -0300 Subject: [PATCH 5/6] =?UTF-8?q?fix:=20Implementando=20constru=C3=A7=C3=A3o?= =?UTF-8?q?=20do=20boneco=20como=20objeto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/boneco/Toy.java | 76 ++++++++++++++++++-------------------- src/boneco/ToyBuilder.java | 30 +++++++++------ 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/src/boneco/Toy.java b/src/boneco/Toy.java index a5aee79..fd2d03e 100644 --- a/src/boneco/Toy.java +++ b/src/boneco/Toy.java @@ -2,7 +2,7 @@ public class Toy { - // Corda + // Rope default String rope; @@ -10,11 +10,11 @@ public class Toy { String body; - //Pernas + //Legs String leftlegs; String rightlegs; - //Braços + //Arms String leftarms; String rightarms; @@ -31,72 +31,66 @@ public Toy(String rope, String head, String body, this.leftarms = leftarms; this.rightarms = rightarms; - } - + public void drawToy(int erros) { - System.out.println(rope); + System.out.println("\n" + rope); switch(erros){ case 1: - System.out.println(head); + System.out.println(" " + head); break; case 2: - System.out.println(head); - System.out.println(body); + System.out.println(" " + head); + System.out.println(" " + body); break; case 3: - System.out.println(head); - System.out.println(body); + System.out.println(" " + head); + System.out.println(" " + body); + + System.out.println(" " + leftlegs); - System.out.println(leftlegs); - break; case 4: - System.out.println(head); - System.out.println(body); + System.out.println(" " + head); + System.out.println(" " + body); - System.out.println(leftlegs + rightlegs); - + 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); - - //System.out.println(leftarms); + 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; - - case 6: - - System.out.println(head); - System.out.println(body); - - System.out.println(rightlegs + leftlegs); - - System.out.println(leftarms + rightarms); - - break; - default: - - System.out.println("\nParabéns por acertar todas as letras sem um único erro"); + default: + System.out.println("\nValor inválido: número de erros fora do intervalo (0 a 7)."); break; } - - - //System.out.println(leftlegs + leftarms); } } diff --git a/src/boneco/ToyBuilder.java b/src/boneco/ToyBuilder.java index 29c240f..6e8715d 100644 --- a/src/boneco/ToyBuilder.java +++ b/src/boneco/ToyBuilder.java @@ -5,19 +5,24 @@ public class ToyBuilder { public static void main(String[] args) { - String rope = "----------------------|"; - String head = " O"; - String body = " |"; +} + + //Method to return an object + public static Toy buildToy(){ + String rope = "\n----------------------|"; + String head = "O"; + String body = "|"; + + //Legs + String leftlegs = "/"; + String rightlegs = "\\"; - //PERNAS - String leftlegs = " /"; - String rightlegs = " \\"; + //arms + String leftarms = "/"; + String rightarms = "\\"; - //BRAÇOS - String leftarms = "———"; - String rightarms = "———"; - // Construção do boneco + // Building toy Toy toy = new Toy( rope, head, @@ -28,8 +33,9 @@ public static void main(String[] args) { rightarms ); - toy.drawToy(5); - + //toy.drawToy(6); + + return toy; } } From bf4495a46ffa1aaeb391cefa60930f79d432f03d Mon Sep 17 00:00:00 2001 From: Dorian Date: Fri, 2 Jan 2026 20:36:06 -0300 Subject: [PATCH 6/6] =?UTF-8?q?feat:=20Implementando=20contru=C3=A7=C3=A3o?= =?UTF-8?q?=20do=20boneco=20comm=20base=20nos=20erros.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/JogoDaForca.java | 12 ++++++++++-- src/LetterDealer.java | 42 +++++++++++++++++++++++++++++++----------- 2 files changed, 41 insertions(+), 13 deletions(-) diff --git a/src/JogoDaForca.java b/src/JogoDaForca.java index fb68a30..dbf188f 100644 --- a/src/JogoDaForca.java +++ b/src/JogoDaForca.java @@ -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){ @@ -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(); diff --git a/src/LetterDealer.java b/src/LetterDealer.java index 46b6367..c941231 100644 --- a/src/LetterDealer.java +++ b/src/LetterDealer.java @@ -3,19 +3,27 @@ import java.util.List; import java.util.Scanner; +import boneco.Toy; +import boneco.ToyBuilder; + + + public class LetterDealer { - void guessLetter(String gameWord, int wordNumLetters, String hiddenWord) { + 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[] ch = gameWord.toLowerCase().toCharArray(); char[] chHidden = hiddenWord.toCharArray(); List wrongLetters = new ArrayList<>(); int rightLetters = 0; int numTrys = 7; - char letter; - + int erro = 0; + boolean victory = false; + char letter; + while (true) { boolean letterWasRight = false; @@ -56,9 +64,13 @@ void guessLetter(String gameWord, int wordNumLetters, String hiddenWord) { 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); @@ -69,14 +81,22 @@ void guessLetter(String gameWord, int wordNumLetters, String hiddenWord) { } System.out.println("\nLetras erradas: " + String.join(", ", wrongLetters)); - System.out.println("Você tem mais " + numTrys + " tentativas."); + 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; - if (rightLetters == wordNumLetters) { - System.out.println("\nParabéns, você acertou :)"); - break; - } else if (numTrys <= 0) { + } if (numTrys <= 0) { System.out.println("\nPoxa, suas chances acabaram :("); - break; + break; } }