From 15acc554e417e5338adf1ce976f7fa6868328306 Mon Sep 17 00:00:00 2001 From: hswiader Date: Sun, 4 Feb 2024 13:20:01 +0100 Subject: [PATCH 1/8] Hubert - ReadTextFromfile --- src/main/java/pl/edu/agh/hangman/Hangman.java | 3 ++ .../pl/edu/agh/hangman/ReadTextFromfile.java | 30 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 src/main/java/pl/edu/agh/hangman/ReadTextFromfile.java diff --git a/src/main/java/pl/edu/agh/hangman/Hangman.java b/src/main/java/pl/edu/agh/hangman/Hangman.java index c402ace7..ed5ad889 100644 --- a/src/main/java/pl/edu/agh/hangman/Hangman.java +++ b/src/main/java/pl/edu/agh/hangman/Hangman.java @@ -1,5 +1,8 @@ package pl.edu.agh.hangman; +import java.util.ArrayList; +import java.util.List; + public class Hangman { public static final String[] HANGMANPICS = new String[]{ diff --git a/src/main/java/pl/edu/agh/hangman/ReadTextFromfile.java b/src/main/java/pl/edu/agh/hangman/ReadTextFromfile.java new file mode 100644 index 00000000..2d08d255 --- /dev/null +++ b/src/main/java/pl/edu/agh/hangman/ReadTextFromfile.java @@ -0,0 +1,30 @@ +package pl.edu.agh.hangman; + +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +public class ReadTextFromfile { + + public ArrayList writeWords (String path) { + + ArrayList words = new ArrayList<>(); + String line; + + try { + BufferedReader bf = new BufferedReader(new FileReader(path)); + while ((line = bf.readLine()) != null) { + words.add(line.toUpperCase()); + } + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } + return words; + } + +} From da30818fcc0b3c4761d9cbfd50534b54d9fd40e1 Mon Sep 17 00:00:00 2001 From: syrowy Date: Sun, 4 Feb 2024 13:59:08 +0100 Subject: [PATCH 2/8] Choose word class --- src/main/java/pl/edu/agh/hangman/ChooseWord.java | 14 ++++++++++++++ src/main/java/pl/edu/agh/hangman/Hangman.java | 1 + 2 files changed, 15 insertions(+) create mode 100644 src/main/java/pl/edu/agh/hangman/ChooseWord.java diff --git a/src/main/java/pl/edu/agh/hangman/ChooseWord.java b/src/main/java/pl/edu/agh/hangman/ChooseWord.java new file mode 100644 index 00000000..eb1a06fe --- /dev/null +++ b/src/main/java/pl/edu/agh/hangman/ChooseWord.java @@ -0,0 +1,14 @@ +package pl.edu.agh.hangman; +import java.util.*; +import java.util.Random; +import java.util.ArrayList; + + +public class ChooseWord { + public String chooseWord (ArrayList words) { + Random random = new Random(); + int randomWord = random.nextInt(words.size()); + return words.get(randomWord); + } +} + diff --git a/src/main/java/pl/edu/agh/hangman/Hangman.java b/src/main/java/pl/edu/agh/hangman/Hangman.java index ed5ad889..50315ffa 100644 --- a/src/main/java/pl/edu/agh/hangman/Hangman.java +++ b/src/main/java/pl/edu/agh/hangman/Hangman.java @@ -1,6 +1,7 @@ package pl.edu.agh.hangman; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; public class Hangman { From 3cd924c62e36b35a918e0af8cc394bb56d7fec6e Mon Sep 17 00:00:00 2001 From: hswiader Date: Sun, 4 Feb 2024 14:16:08 +0100 Subject: [PATCH 3/8] Hubert guess --- src/main/java/pl/edu/agh/hangman/Guess.java | 56 +++++++++++++++++++ src/main/java/pl/edu/agh/hangman/Hangman.java | 2 + .../pl/edu/agh/hangman/ReadTextFromfile.java | 1 - 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 src/main/java/pl/edu/agh/hangman/Guess.java diff --git a/src/main/java/pl/edu/agh/hangman/Guess.java b/src/main/java/pl/edu/agh/hangman/Guess.java new file mode 100644 index 00000000..cd7bbb8c --- /dev/null +++ b/src/main/java/pl/edu/agh/hangman/Guess.java @@ -0,0 +1,56 @@ +package pl.edu.agh.hangman; +import java.util.HashSet; +import java.util.Scanner; +import java.util.Set; + +public class Guess { + + public void guess (String word) { + char[] wordLetters = word.toCharArray(); + char[] emptySpaces = generateEmptySpaces(word); + int lettersToGuess = word.length(); + Set lettersUsed = new HashSet<>(); + + + while (lettersToGuess>=0) { + printBoard(emptySpaces); + System.out.println("Podaj literę: \n"); + char letter = getString().toUpperCase().charAt(0); + if (lettersUsed.contains(letter)){ + while (lettersUsed.contains(letter)) { + System.out.println("Ta litera już wystąpiła. Spróbuj ponownie: "); + letter = getString().toUpperCase().charAt(0); + } + } + lettersUsed.add(letter); + + for (int i = 0; i Date: Sun, 4 Feb 2024 14:25:34 +0100 Subject: [PATCH 4/8] Main changes --- src/main/java/pl/edu/agh/hangman/Hangman.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/pl/edu/agh/hangman/Hangman.java b/src/main/java/pl/edu/agh/hangman/Hangman.java index 95c598da..7a222a8e 100644 --- a/src/main/java/pl/edu/agh/hangman/Hangman.java +++ b/src/main/java/pl/edu/agh/hangman/Hangman.java @@ -60,6 +60,8 @@ public class Hangman { public static void main(String[] args) { Guess game = new Guess(); - game.guess("JAVA"); + ChooseWord generateWord = new ChooseWord(); + ReadTextFromfile fileReader = new ReadTextFromfile(); + game.guess(generateWord.chooseWord(fileReader.writeWords("/home/students/h/s/hswiader/Java/java-hangman/src/main/resources/slowa.txt"))); } } From b6388e9ef403f41581c361b0ca6dbdec522eac12 Mon Sep 17 00:00:00 2001 From: syrowy Date: Sun, 4 Feb 2024 14:56:05 +0100 Subject: [PATCH 5/8] Kamil update --- src/main/java/pl/edu/agh/hangman/Guess.java | 27 ++++++++++++++++++- src/main/java/pl/edu/agh/hangman/Hangman.java | 2 +- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/main/java/pl/edu/agh/hangman/Guess.java b/src/main/java/pl/edu/agh/hangman/Guess.java index cd7bbb8c..2036c0e9 100644 --- a/src/main/java/pl/edu/agh/hangman/Guess.java +++ b/src/main/java/pl/edu/agh/hangman/Guess.java @@ -10,11 +10,14 @@ public void guess (String word) { char[] emptySpaces = generateEmptySpaces(word); int lettersToGuess = word.length(); Set lettersUsed = new HashSet<>(); + Hangman hangman = new Hangman(); + int life = hangman.HANGMANPICS.length; while (lettersToGuess>=0) { + System.out.println(); printBoard(emptySpaces); - System.out.println("Podaj literę: \n"); + System.out.print("Podaj literę: "); char letter = getString().toUpperCase().charAt(0); if (lettersUsed.contains(letter)){ while (lettersUsed.contains(letter)) { @@ -24,6 +27,8 @@ public void guess (String word) { } lettersUsed.add(letter); + int LetterToGuessBefore = lettersToGuess; + for (int i = 0; i Date: Sun, 4 Feb 2024 15:11:06 +0100 Subject: [PATCH 6/8] Update 2 --- src/main/java/pl/edu/agh/hangman/Hangman.java | 5 +++-- .../java/pl/edu/agh/hangman/ReadTextFromfile.java | 14 +++++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/main/java/pl/edu/agh/hangman/Hangman.java b/src/main/java/pl/edu/agh/hangman/Hangman.java index 3c683d1e..857f74a2 100644 --- a/src/main/java/pl/edu/agh/hangman/Hangman.java +++ b/src/main/java/pl/edu/agh/hangman/Hangman.java @@ -61,7 +61,8 @@ public class Hangman { public static void main(String[] args) { Guess game = new Guess(); ChooseWord generateWord = new ChooseWord(); - ReadTextFromfile fileReader = new ReadTextFromfile(); - game.guess(generateWord.chooseWord(fileReader.writeWords("/home/students/s/y/syrowy/Desktop/techniki programowania 2/MiniProjekt/java-hangman/src/main/resources/slowa.txt"))); + ReadTextFromfile fileReader = new ReadTextFromfile("slowa.txt"); + game.guess(generateWord.chooseWord(fileReader.writeWords())); + } } diff --git a/src/main/java/pl/edu/agh/hangman/ReadTextFromfile.java b/src/main/java/pl/edu/agh/hangman/ReadTextFromfile.java index 356ed04a..e19e819f 100644 --- a/src/main/java/pl/edu/agh/hangman/ReadTextFromfile.java +++ b/src/main/java/pl/edu/agh/hangman/ReadTextFromfile.java @@ -1,17 +1,21 @@ package pl.edu.agh.hangman; -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; +import java.io.*; import java.util.ArrayList; public class ReadTextFromfile { - public ArrayList writeWords (String path) { + private String path; + + public ReadTextFromfile(String path) { + this.path = path; + } + + public ArrayList writeWords () { ArrayList words = new ArrayList<>(); String line; + File file = new File(path); try { BufferedReader bf = new BufferedReader(new FileReader(path)); From 9170c8d6ba0e29f5215de9166791cdaf4f95412b Mon Sep 17 00:00:00 2001 From: syrowy Date: Sun, 4 Feb 2024 15:21:13 +0100 Subject: [PATCH 7/8] Test Update 3 --- src/main/java/pl/edu/agh/hangman/Guess.java | 2 +- src/main/java/pl/edu/agh/hangman/Hangman.java | 2 +- .../java/pl/edu/agh/hangman/ReadTextFromfile.java | 12 ++++++++++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/java/pl/edu/agh/hangman/Guess.java b/src/main/java/pl/edu/agh/hangman/Guess.java index 2036c0e9..ab5803c6 100644 --- a/src/main/java/pl/edu/agh/hangman/Guess.java +++ b/src/main/java/pl/edu/agh/hangman/Guess.java @@ -47,7 +47,7 @@ public void guess (String word) { break; } } - if (lettersToGuess!=0) { + if (lettersToGuess==0) { System.out.println("Gratulacje, wygrałeś!"); } } diff --git a/src/main/java/pl/edu/agh/hangman/Hangman.java b/src/main/java/pl/edu/agh/hangman/Hangman.java index 857f74a2..a910de46 100644 --- a/src/main/java/pl/edu/agh/hangman/Hangman.java +++ b/src/main/java/pl/edu/agh/hangman/Hangman.java @@ -61,7 +61,7 @@ public class Hangman { public static void main(String[] args) { Guess game = new Guess(); ChooseWord generateWord = new ChooseWord(); - ReadTextFromfile fileReader = new ReadTextFromfile("slowa.txt"); + ReadTextFromfile fileReader = new ReadTextFromfile("/slowa.txt"); game.guess(generateWord.chooseWord(fileReader.writeWords())); } diff --git a/src/main/java/pl/edu/agh/hangman/ReadTextFromfile.java b/src/main/java/pl/edu/agh/hangman/ReadTextFromfile.java index e19e819f..96c376c2 100644 --- a/src/main/java/pl/edu/agh/hangman/ReadTextFromfile.java +++ b/src/main/java/pl/edu/agh/hangman/ReadTextFromfile.java @@ -1,6 +1,8 @@ package pl.edu.agh.hangman; import java.io.*; +import java.net.URISyntaxException; +import java.net.URL; import java.util.ArrayList; public class ReadTextFromfile { @@ -15,10 +17,16 @@ public ArrayList writeWords () { ArrayList words = new ArrayList<>(); String line; - File file = new File(path); + URL pathToFile = ReadTextFromfile.class.getResource(path); + File file = null; + try { + file = new File(pathToFile.toURI()); + } catch (URISyntaxException e) { + throw new RuntimeException(e); + } try { - BufferedReader bf = new BufferedReader(new FileReader(path)); + BufferedReader bf = new BufferedReader(new FileReader(file)); while ((line = bf.readLine()) != null) { words.add(line.toUpperCase()); } From 10e3758280d42cefae0c642c4e344660489476bb Mon Sep 17 00:00:00 2001 From: syrowy Date: Sun, 4 Feb 2024 15:39:50 +0100 Subject: [PATCH 8/8] Hangman Update 4 --- src/main/java/pl/edu/agh/hangman/Guess.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/pl/edu/agh/hangman/Guess.java b/src/main/java/pl/edu/agh/hangman/Guess.java index ab5803c6..83e8373b 100644 --- a/src/main/java/pl/edu/agh/hangman/Guess.java +++ b/src/main/java/pl/edu/agh/hangman/Guess.java @@ -13,7 +13,6 @@ public void guess (String word) { Hangman hangman = new Hangman(); int life = hangman.HANGMANPICS.length; - while (lettersToGuess>=0) { System.out.println(); printBoard(emptySpaces); @@ -41,15 +40,18 @@ public void guess (String word) { if (LetterToGuessBefore == LetterToGuessAfter) { life --; lose(life); + System.out.println("Zła litera, straciłeś życie. Pozostało Ci " + life + " żyć"); } if (life == 0) { System.out.println("Przegrałeś!"); + System.out.println("Słowo do odgadnięcia to: " + word); + break; + } else if (lettersToGuess == 0) { + System.out.println("Gratulacje, wygrałeś!"); + System.out.println("Odgadnięte słowo to: " + word); break; } } - if (lettersToGuess==0) { - System.out.println("Gratulacje, wygrałeś!"); - } } public char[] generateEmptySpaces (String word) { @@ -74,8 +76,6 @@ public void printBoard (char[] board) { public void lose (int life){ Hangman hangman = new Hangman(); String[] stage = hangman.HANGMANPICS; - System.out.println(stage[6-life]); - } }