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..6579db37 --- /dev/null +++ b/src/main/java/pl/edu/agh/hangman/Display.java @@ -0,0 +1,71 @@ +package pl.edu.agh.hangman; + +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("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 c402ace7..0143bbde 100644 --- a/src/main/java/pl/edu/agh/hangman/Hangman.java +++ b/src/main/java/pl/edu/agh/hangman/Hangman.java @@ -2,58 +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); } } 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..b9b5cae5 --- /dev/null +++ b/src/main/java/pl/edu/agh/hangman/WordRandomizer.java @@ -0,0 +1,45 @@ +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 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 + if (inputStream == null) { + throw new RuntimeException("brak pliku w resources"); + } + + // 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!"); + } + } + + // zwraca wylosowane slowo + public String getRandomWord() { + return words.get(random.nextInt(words.size())).toLowerCase(); + } +}