From 910dcf7b4fcc4539713bdd4f0db28087ccdc8823 Mon Sep 17 00:00:00 2001 From: Kamil Nowak Date: Sat, 31 Jan 2026 09:53:03 +0100 Subject: [PATCH 1/4] Dodanie klasy word randomizer --- src/main/java/pl/edu/agh/hangman/Hangman.java | 3 +- .../pl/edu/agh/hangman/WordRandomizer.java | 35 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 src/main/java/pl/edu/agh/hangman/WordRandomizer.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..2aeebd5d 100644 --- a/src/main/java/pl/edu/agh/hangman/Hangman.java +++ b/src/main/java/pl/edu/agh/hangman/Hangman.java @@ -55,5 +55,6 @@ public class Hangman { }; public static void main(String[] args) { + System.out.println(WordRandomizer.getRandomWord()); } -} +} \ No newline at end of file diff --git a/src/main/java/pl/edu/agh/hangman/WordRandomizer.java b/src/main/java/pl/edu/agh/hangman/WordRandomizer.java new file mode 100644 index 00000000..2a440081 --- /dev/null +++ b/src/main/java/pl/edu/agh/hangman/WordRandomizer.java @@ -0,0 +1,35 @@ +package pl.edu.agh.hangman; +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.List; +import java.util.Random; +import java.util.stream.Collectors; + +public class WordRandomizer { +//Jedno wspolne zrodlo losowosci dla calej klasy + private static final Random RANDOM = new Random(); +//zwraca wylosowane slowo + public static String getRandomWord() { +//ladowanie slow z pliku + InputStream inputStream = WordRandomizer.class + .getClassLoader() + .getResourceAsStream("slowa.txt"); + +//Sprawdzanie czy plik istnieje w resources + if (inputStream == null) { + throw new RuntimeException("brak pliku w resources"); + } + //Najwazniejsza czesc progaramu + List words = new BufferedReader(new InputStreamReader(inputStream)) //zmiana bajtow na znaki + .lines() //czytanie liku linia po lini + .filter(line -> !line.isBlank()) //tworzy strumien lini tekstu + .collect(Collectors.toList()); //usuwa puste linie i spacje + + if (words.isEmpty()) { + throw new RuntimeException("wybrany plik jest pusty!"); + } + + return words.get(RANDOM.nextInt(words.size())).toLowerCase(); + } +} From 67d40721808cca7f7c3cc71619c7d9b044f220fe Mon Sep 17 00:00:00 2001 From: Kamil Nowak Date: Sat, 31 Jan 2026 10:31:29 +0100 Subject: [PATCH 2/4] poprawienie klasy word randomizer --- src/main/java/pl/edu/agh/hangman/Display.java | 5 +++ src/main/java/pl/edu/agh/hangman/Hangman.java | 4 ++- .../pl/edu/agh/hangman/WordRandomizer.java | 34 ++++++++++++------- 3 files changed, 30 insertions(+), 13 deletions(-) create mode 100644 src/main/java/pl/edu/agh/hangman/Display.java diff --git a/src/main/java/pl/edu/agh/hangman/Display.java b/src/main/java/pl/edu/agh/hangman/Display.java new file mode 100644 index 00000000..4d6c3889 --- /dev/null +++ b/src/main/java/pl/edu/agh/hangman/Display.java @@ -0,0 +1,5 @@ +package pl.edu.agh.hangman; + +public class Display { + +} diff --git a/src/main/java/pl/edu/agh/hangman/Hangman.java b/src/main/java/pl/edu/agh/hangman/Hangman.java index 2aeebd5d..b8ce914d 100644 --- a/src/main/java/pl/edu/agh/hangman/Hangman.java +++ b/src/main/java/pl/edu/agh/hangman/Hangman.java @@ -55,6 +55,8 @@ public class Hangman { }; public static void main(String[] args) { - System.out.println(WordRandomizer.getRandomWord()); + WordRandomizer randomizer = new WordRandomizer(); + String word = randomizer.getRandomWord(); + System.out.println("Wylosowane slowo (test): " + word); } } \ No newline at end of file diff --git a/src/main/java/pl/edu/agh/hangman/WordRandomizer.java b/src/main/java/pl/edu/agh/hangman/WordRandomizer.java index 2a440081..99f90883 100644 --- a/src/main/java/pl/edu/agh/hangman/WordRandomizer.java +++ b/src/main/java/pl/edu/agh/hangman/WordRandomizer.java @@ -1,4 +1,5 @@ package pl.edu.agh.hangman; + import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; @@ -7,29 +8,38 @@ import java.util.stream.Collectors; public class WordRandomizer { -//Jedno wspolne zrodlo losowosci dla calej klasy - private static final Random RANDOM = new Random(); -//zwraca wylosowane slowo - public static String getRandomWord() { -//ladowanie slow z pliku + + // Jedno wspolne zrodlo losowosci dla OBIEKTU + private final Random random = new Random(); + + // Lista slow przechowywana jako STAN obiektu + private final List words; + + // Konstruktor - ladowanie slow z pliku + public WordRandomizer() { + InputStream inputStream = WordRandomizer.class .getClassLoader() .getResourceAsStream("slowa.txt"); -//Sprawdzanie czy plik istnieje w resources + // Sprawdzanie czy plik istnieje w resources if (inputStream == null) { throw new RuntimeException("brak pliku w resources"); } - //Najwazniejsza czesc progaramu - List words = new BufferedReader(new InputStreamReader(inputStream)) //zmiana bajtow na znaki - .lines() //czytanie liku linia po lini - .filter(line -> !line.isBlank()) //tworzy strumien lini tekstu - .collect(Collectors.toList()); //usuwa puste linie i spacje + + // Najwazniejsza czesc programu + words = new BufferedReader(new InputStreamReader(inputStream)) // zmiana bajtow na znaki + .lines() // czytanie pliku linia po linii + .filter(line -> !line.isBlank()) // usuwa puste linie i spacje + .collect(Collectors.toList()); // zapis do listy if (words.isEmpty()) { throw new RuntimeException("wybrany plik jest pusty!"); } + } - return words.get(RANDOM.nextInt(words.size())).toLowerCase(); + // zwraca wylosowane slowo + public String getRandomWord() { + return words.get(random.nextInt(words.size())).toLowerCase(); } } From 5168b88916d435e094546ed22cfabc715fd801d1 Mon Sep 17 00:00:00 2001 From: Kamil Nowak Date: Sat, 31 Jan 2026 10:41:10 +0100 Subject: [PATCH 3/4] poprawienie klasy word randomizer dodanie klasy --- src/main/java/pl/edu/agh/hangman/Display.java | 66 +++++++++++++++++++ .../pl/edu/agh/hangman/WordRandomizer.java | 4 +- 2 files changed, 68 insertions(+), 2 deletions(-) diff --git a/src/main/java/pl/edu/agh/hangman/Display.java b/src/main/java/pl/edu/agh/hangman/Display.java index 4d6c3889..28b6e5b7 100644 --- a/src/main/java/pl/edu/agh/hangman/Display.java +++ b/src/main/java/pl/edu/agh/hangman/Display.java @@ -2,4 +2,70 @@ public class Display { + // Grafika wisielca z kolejnymi etapami + public static final String[] HANGMANPICS = new String[]{ + " +---+\n" + + " | |\n" + + " |\n" + + " |\n" + + " |\n" + + " |\n" + + "=========", + + " +---+\n" + + " | |\n" + + " O |\n" + + " |\n" + + " |\n" + + " |\n" + + "=========", + + " +---+\n" + + " | |\n" + + " O |\n" + + " | |\n" + + " |\n" + + " |\n" + + "=========", + + " +---+\n" + + " | |\n" + + " O |\n" + + " /| |\n" + + " |\n" + + " |\n" + + "=========", + + " +---+\n" + + " | |\n" + + " O |\n" + + " /|\\ |\n" + + " |\n" + + " |\n" + + "=========", + + " +---+\n" + + " | |\n" + + " O |\n" + + " /|\\ |\n" + + " / |\n" + + " |\n" + + "=========", + + " +---+\n" + + " | |\n" + + " O |\n" + + " /|\\ |\n" + + " / \\ |\n" + + " |\n" + + "========" + }; + + // Wyswietlenie na podstawie ilosci bledow + public static void showHangman(int mistakes) { + if (mistakes < 0 || mistakes >= HANGMANPICS.length) { + throw new IllegalArgumentException("Niepopr"); + } + System.out.println(HANGMANPICS[mistakes]); + } } diff --git a/src/main/java/pl/edu/agh/hangman/WordRandomizer.java b/src/main/java/pl/edu/agh/hangman/WordRandomizer.java index 99f90883..b9b5cae5 100644 --- a/src/main/java/pl/edu/agh/hangman/WordRandomizer.java +++ b/src/main/java/pl/edu/agh/hangman/WordRandomizer.java @@ -30,8 +30,8 @@ public WordRandomizer() { // Najwazniejsza czesc programu words = new BufferedReader(new InputStreamReader(inputStream)) // zmiana bajtow na znaki .lines() // czytanie pliku linia po linii - .filter(line -> !line.isBlank()) // usuwa puste linie i spacje - .collect(Collectors.toList()); // zapis do listy + .filter(line -> !line.isBlank()) // usuwa puste linie i spacje + .collect(Collectors.toList()); // zapis do listy if (words.isEmpty()) { throw new RuntimeException("wybrany plik jest pusty!"); From 07a4df1a6b0b6e21060466cc43a10fd34e194ed8 Mon Sep 17 00:00:00 2001 From: Kamil Nowak Date: Sat, 31 Jan 2026 10:50:41 +0100 Subject: [PATCH 4/4] poprawienie klasy word randomizer dodanie klasy --- src/main/java/pl/edu/agh/hangman/Display.java | 2 +- src/main/java/pl/edu/agh/hangman/Hangman.java | 56 +------------------ 2 files changed, 4 insertions(+), 54 deletions(-) diff --git a/src/main/java/pl/edu/agh/hangman/Display.java b/src/main/java/pl/edu/agh/hangman/Display.java index 28b6e5b7..6579db37 100644 --- a/src/main/java/pl/edu/agh/hangman/Display.java +++ b/src/main/java/pl/edu/agh/hangman/Display.java @@ -64,7 +64,7 @@ public class Display { // Wyswietlenie na podstawie ilosci bledow public static void showHangman(int mistakes) { if (mistakes < 0 || mistakes >= HANGMANPICS.length) { - throw new IllegalArgumentException("Niepopr"); + throw new IllegalArgumentException("Niepoprawna dlugosc"); } System.out.println(HANGMANPICS[mistakes]); } diff --git a/src/main/java/pl/edu/agh/hangman/Hangman.java b/src/main/java/pl/edu/agh/hangman/Hangman.java index b8ce914d..0143bbde 100644 --- a/src/main/java/pl/edu/agh/hangman/Hangman.java +++ b/src/main/java/pl/edu/agh/hangman/Hangman.java @@ -2,61 +2,11 @@ public class Hangman { - public static final String[] HANGMANPICS = new String[]{ - " +---+\n" + - " | |\n" + - " |\n" + - " |\n" + - " |\n" + - " |\n" + - "=========", - " +---+\n" + - " | |\n" + - " O |\n" + - " |\n" + - " |\n" + - " |\n" + - "=========", - " +---+\n" + - " | |\n" + - " O |\n" + - " | |\n" + - " |\n" + - " |\n" + - "=========", - " +---+\n" + - " | |\n" + - " O |\n" + - " /| |\n" + - " |\n" + - " |\n" + - "=========", - " +---+\n" + - " | |\n" + - " O |\n" + - " /|\\ |\n" + - " |\n" + - " |\n" + - "=========", - " +---+\n" + - " | |\n" + - " O |\n" + - " /|\\ |\n" + - " / |\n" + - " |\n" + - "=========", - " +---+\n" + - " | |\n" + - " O |\n" + - " /|\\ |\n" + - " / \\ |\n" + - " |\n" + - "========" - }; - public static void main(String[] args) { + + // Test WordRandomizer WordRandomizer randomizer = new WordRandomizer(); String word = randomizer.getRandomWord(); System.out.println("Wylosowane slowo (test): " + word); } -} \ No newline at end of file +}