diff --git a/src/main/java/com/hangman/players/YourPlayer.java b/src/main/java/com/hangman/players/YourPlayer.java index df4a96a..c81a02e 100644 --- a/src/main/java/com/hangman/players/YourPlayer.java +++ b/src/main/java/com/hangman/players/YourPlayer.java @@ -2,11 +2,65 @@ import com.hangman.Player; -import java.util.List; +import java.util.*; public class YourPlayer implements Player { + private Stack priorityStack = new Stack(); + private Stack secondaryStack = new Stack(); + + private List priorityCharacters = new ArrayList(); + private List secondaryCharacters = new ArrayList(); + + private boolean emptyCurrentClueList = true; + + public YourPlayer(){ + priorityCharacters = Arrays.asList('u', 'l', 'd', 'r', 'h', 's', 'n', 'i', 'o', 'a', 't', 'e'); + + secondaryCharacters = Arrays.asList('b', 'c', 'd', 'f', 'g', 'j', 'k', 'm', 'p', 'q', 'v', 'w', 'x', 'y', 'z'); + + for (Character letter : priorityCharacters){ + priorityStack.push(letter); + } + + for (Character letter : secondaryCharacters){ + secondaryStack.push(letter); + } + } + @Override public char getGuess(List currentClue) { - return 'a'; + checkIfEmptyCurrentClueList(currentClue); + + if (emptyCurrentClueList){ + return priorityStack.pop(); + } + else { + return getNextGuess(); + } + } + + private void checkIfEmptyCurrentClueList(List currentClue){ + for (Character element : currentClue) + if (element != null){ + emptyCurrentClueList = false; + } + } + private char getNextGuess(){ + if (priorityStack.isEmpty()){ + return getGuessFromSecondaryStack(); + } + else { + return priorityStack.pop(); + } + } + + private char getGuessFromSecondaryStack(){ + if (secondaryStack.isEmpty()){ + // No more guesses left ... ??? + return 'A'; + } + else { + return secondaryStack.pop(); + } } } diff --git a/src/test/java/com/hangman/players/YourPlayerTest.java b/src/test/java/com/hangman/players/YourPlayerTest.java index b1e80e5..194583f 100644 --- a/src/test/java/com/hangman/players/YourPlayerTest.java +++ b/src/test/java/com/hangman/players/YourPlayerTest.java @@ -1,8 +1,13 @@ package com.hangman.players; import org.junit.Test; + +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; + import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; public class YourPlayerTest { @Test @@ -11,24 +16,20 @@ public void guessesAWhenThereAreNoSuccessfulCharactersGuessedYet() { char guess = player.getGuess(Arrays.asList(null, null, null)); - assertEquals('a', guess); + assertEquals('e', guess); } @Test - public void guessesAWhenThereAreSuccessfulCharactersGuessedThatAreNotA() { + public void guessesLetterNotInCurrentClueList() { YourPlayer player = new YourPlayer(); char guess = player.getGuess(Arrays.asList('m', null, 'n')); - assertEquals('a', guess); + boolean guessNotInList = assertGuessNotInList(guess, Arrays.asList('m', null, 'n')); + assertEquals(true, guessNotInList); } - @Test - public void guessesAWhenAIsThereAreAsInTheClueAsWell() { - YourPlayer player = new YourPlayer(); - - char guess = player.getGuess(Arrays.asList(null, 'a', null)); - - assertEquals('a', guess); + static boolean assertGuessNotInList(char guess, List currentClueList) { + return (!(currentClueList.contains(guess))); } }