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
14 changes: 14 additions & 0 deletions src/main/java/pl/edu/agh/hangman/ChooseWord.java
Original file line number Diff line number Diff line change
@@ -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<String> words) {
Random random = new Random();
int randomWord = random.nextInt(words.size());
return words.get(randomWord);
}
}

81 changes: 81 additions & 0 deletions src/main/java/pl/edu/agh/hangman/Guess.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
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<Character> lettersUsed = new HashSet<>();
Hangman hangman = new Hangman();
int life = hangman.HANGMANPICS.length;

while (lettersToGuess>=0) {
System.out.println();
printBoard(emptySpaces);
System.out.print("Podaj literę: ");
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);

int LetterToGuessBefore = lettersToGuess;

for (int i = 0; i<wordLetters.length; i++) {
char x = wordLetters[i];
if (letter == x) {
emptySpaces[i] = letter;
lettersToGuess --;
}
}
int LetterToGuessAfter = lettersToGuess;

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;
}
}
}

public char[] generateEmptySpaces (String word) {
char[] emptySpace = new char[word.length()];

for (int i = 0; i<emptySpace.length; i++) {
emptySpace[i] = '_';
}
return emptySpace;
}

public String getString() {
Scanner scanner = new Scanner(System.in);
return scanner.nextLine();
}

public void printBoard (char[] board) {
for (int i = 0; i<board.length; i++) {
System.out.print(board[i] + " ");
}
}
public void lose (int life){
Hangman hangman = new Hangman();
String[] stage = hangman.HANGMANPICS;
System.out.println(stage[6-life]);
}
}
9 changes: 9 additions & 0 deletions src/main/java/pl/edu/agh/hangman/Hangman.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package pl.edu.agh.hangman;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Hangman {

public static final String[] HANGMANPICS = new String[]{
Expand Down Expand Up @@ -55,5 +59,10 @@ public class Hangman {
};

public static void main(String[] args) {
Guess game = new Guess();
ChooseWord generateWord = new ChooseWord();
ReadTextFromfile fileReader = new ReadTextFromfile("/slowa.txt");
game.guess(generateWord.chooseWord(fileReader.writeWords()));

}
}
41 changes: 41 additions & 0 deletions src/main/java/pl/edu/agh/hangman/ReadTextFromfile.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package pl.edu.agh.hangman;

import java.io.*;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.ArrayList;

public class ReadTextFromfile {

private String path;

public ReadTextFromfile(String path) {
this.path = path;
}

public ArrayList<String> writeWords () {

ArrayList<String> words = new ArrayList<>();
String line;
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(file));
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;
}

}