From 179f0f8a84c3531798b2eedb4e3d393b408122b2 Mon Sep 17 00:00:00 2001 From: Jyotsna Bhonde Date: Mon, 13 Apr 2015 11:58:48 -0400 Subject: [PATCH 1/2] Jyotsna's commit --- .../java/com/hangman/players/YourPlayer.java | 102 +++++++++++++++++- .../com/hangman/players/YourPlayerTest.java | 52 ++++++++- 2 files changed, 151 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/hangman/players/YourPlayer.java b/src/main/java/com/hangman/players/YourPlayer.java index ddcfbd3..bb28c31 100644 --- a/src/main/java/com/hangman/players/YourPlayer.java +++ b/src/main/java/com/hangman/players/YourPlayer.java @@ -8,6 +8,106 @@ public class YourPlayer implements Player { @Override public char GetGuess(List currentClue) { - return 'a'; + if (moreVowelsToBeReturned(currentClue)){ + return nextVowelToReturn(currentClue); + } + + return returnNextPopularConsonant(currentClue); + } + + public boolean moreVowelsToBeReturned(List currentClue){ + List list = Arrays.asList('a', 'e', 'i', 'o', 'u', 'y'); + if (currentClue.containsAll(list)){ + return false; + }else{ + return true; + } + } + + public char nextVowelToReturn(List currentClue){ + if (!currentClue.contains('a')){ + return 'a'; + } + if (!currentClue.contains('e')){ + return 'e'; + } + if (!currentClue.contains('i')){ + return 'i'; + } + if (!currentClue.contains(('o'))){ + return 'o'; + } + if (!currentClue.contains('u')) { + return 'u'; + } + if (!currentClue.contains('y')) { + return 'y'; + } + throw new IllegalStateException("All vowels existed. No more vowels remain to be returned"); + } + + public char returnNextPopularConsonant(List currentClue){ + if (!currentClue.contains('s')){ + return 's'; + } + if (!currentClue.contains('t')){ + return 't'; + } + if (!currentClue.contains('r')){ + return 'r'; + } + if (!currentClue.contains('l')){ + return 'l'; + } + if(!currentClue.contains('n')){ + return 'n'; + } + if(!currentClue.contains('p')){ + return 'p'; + } + if(!currentClue.contains('g')){ + return 'g'; + } + if(!currentClue.contains('h')){ + return 'h'; + } + if(!currentClue.contains('z')){ + return 'z'; + } + if(!currentClue.contains('m')){ + return 'm'; + } + if(!currentClue.contains('x')){ + return 'x'; + } + if(!currentClue.contains('c')){ + return 'c'; + } + if(!currentClue.contains('d')){ + return 'd'; + } + if(!currentClue.contains('b')){ + return 'b'; + } + if(!currentClue.contains('f')){ + return 'f'; + } + if(!currentClue.contains('j')){ + return 'j'; + } + if(!currentClue.contains('k')){ + return 'k'; + } + if(!currentClue.contains('q')){ + return 'q'; + } + if(!currentClue.contains('v')){ + return 'v'; + } + if(!currentClue.contains('w')){ + return 'w'; + } + throw new IllegalStateException("All consonants exhausted."); } + } diff --git a/src/test/java/com/hangman/players/YourPlayerTest.java b/src/test/java/com/hangman/players/YourPlayerTest.java index d613f6b..6066234 100644 --- a/src/test/java/com/hangman/players/YourPlayerTest.java +++ b/src/test/java/com/hangman/players/YourPlayerTest.java @@ -2,6 +2,8 @@ import org.junit.Test; import java.util.Arrays; +import java.util.List; + import static org.junit.Assert.assertEquals; public class YourPlayerTest { @@ -24,11 +26,57 @@ public void GuessesAWhenThereAreSuccessfulCharactersGuessedThatAreNotA() { } @Test - public void GuessesAWhenAIsThereAreAsInTheClueAsWell() { + public void DoNotGuessAIfAlreadyGuessed(){ YourPlayer player = new YourPlayer(); char guess = player.GetGuess(Arrays.asList('_', 'a', '_')); - assertEquals('a', guess); + assertEquals('e', guess); + } + + @Test + public void ReturnsTrueIfMoreVowelsToBeReturned(){ + YourPlayer player = new YourPlayer(); + List currentClue = Arrays.asList('a', 'e', 'i', '_', 'o'); + boolean result = player.moreVowelsToBeReturned(currentClue); + + assertEquals(true, result); + } + + @Test + public void ReturnsFalseIfMoreVowelsToBeReturned(){ + YourPlayer player = new YourPlayer(); + List currentClue = Arrays.asList('a', 'e', 'i', '_', 'o', 'u', 'y'); + boolean result = player.moreVowelsToBeReturned(currentClue); + + assertEquals(false, result); + } + + @Test + public void GetNextVowelInList(){ + YourPlayer player = new YourPlayer(); + List currentClue = Arrays.asList('a', '_', '_', 'i'); + + char result = player.nextVowelToReturn(currentClue); + + assertEquals('e', result); + } + + @Test (expected = IllegalStateException.class) + public void ThrowsExceptionWhenNoMoreVowelsToBeReturned(){ + YourPlayer player = new YourPlayer(); + List currentClue = Arrays.asList('a', 'e', 'i', '_', 'o', 'u', 'y'); + player.nextVowelToReturn(currentClue); } + + @Test + public void ReturnConsonantInOrderOfPopularity(){ + YourPlayer player = new YourPlayer(); + List currentClue = Arrays.asList('a', 'e', 'i', '_', 'o', 'u', 'y'); + + char guess = player.GetGuess(currentClue); + + assertEquals('s', guess); + } + } From 1ddb60a89ea9799f2aacb63041a5105b8b720d6b Mon Sep 17 00:00:00 2001 From: Jyotsna Bhonde Date: Mon, 13 Apr 2015 15:03:03 -0400 Subject: [PATCH 2/2] Jyotsna's 2nd commit --- .../java/com/hangman/players/YourPlayer.java | 140 ++++++++++-------- .../com/hangman/players/YourPlayerTest.java | 43 +----- 2 files changed, 85 insertions(+), 98 deletions(-) diff --git a/src/main/java/com/hangman/players/YourPlayer.java b/src/main/java/com/hangman/players/YourPlayer.java index bb28c31..81aa3ed 100644 --- a/src/main/java/com/hangman/players/YourPlayer.java +++ b/src/main/java/com/hangman/players/YourPlayer.java @@ -1,113 +1,127 @@ package com.hangman.players; import com.hangman.Player; +import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedList; import java.util.List; public class YourPlayer implements Player { + List usedChars = new ArrayList<>(); @Override public char GetGuess(List currentClue) { - if (moreVowelsToBeReturned(currentClue)){ - return nextVowelToReturn(currentClue); - } - - return returnNextPopularConsonant(currentClue); + return returnNextPopularChoice(currentClue); } - public boolean moreVowelsToBeReturned(List currentClue){ - List list = Arrays.asList('a', 'e', 'i', 'o', 'u', 'y'); - if (currentClue.containsAll(list)){ - return false; - }else{ - return true; + public char returnNextPopularChoice(List currentClue){ + if (!currentClue.contains('e') && !usedChars.contains('e')){ + addToUsedChars('e'); + return 'e'; } - } - - public char nextVowelToReturn(List currentClue){ - if (!currentClue.contains('a')){ + if (!currentClue.contains('a') && !usedChars.contains('a')){ + addToUsedChars('a'); return 'a'; } - if (!currentClue.contains('e')){ - return 'e'; + if (!currentClue.contains('s') && !usedChars.contains('s')){ + addToUsedChars('s'); + return 's'; + } + if (!currentClue.contains('t') && !usedChars.contains('t')){ + addToUsedChars('t'); + return 't'; + } + if (!currentClue.contains('r') && !usedChars.contains('r')){ + addToUsedChars('r'); + return 'r'; } - if (!currentClue.contains('i')){ + if (!currentClue.contains('l') && !usedChars.contains('l')){ + addToUsedChars('l'); + return 'l'; + } + if(!currentClue.contains('n') && !usedChars.contains('n')){ + addToUsedChars('n'); + return 'n'; + } + if (!currentClue.contains('i') && !usedChars.contains('i')){ + addToUsedChars('i'); return 'i'; } - if (!currentClue.contains(('o'))){ + if (!currentClue.contains(('o')) && !usedChars.contains('o')){ + addToUsedChars('o'); return 'o'; } - if (!currentClue.contains('u')) { - return 'u'; + if(!currentClue.contains('c') && !usedChars.contains('c')){ + addToUsedChars('c'); + return 'c'; } - if (!currentClue.contains('y')) { - return 'y'; + if(!currentClue.contains('d') && !usedChars.contains('d')){ + addToUsedChars('d'); + return 'd'; } - throw new IllegalStateException("All vowels existed. No more vowels remain to be returned"); - } - - public char returnNextPopularConsonant(List currentClue){ - if (!currentClue.contains('s')){ - return 's'; + if(!currentClue.contains('b') && !usedChars.contains('b')){ + addToUsedChars('b'); + return 'b'; } - if (!currentClue.contains('t')){ - return 't'; + if(!currentClue.contains('f') && !usedChars.contains('f')){ + addToUsedChars('f'); + return 'f'; } - if (!currentClue.contains('r')){ - return 'r'; + if(!currentClue.contains('j') && !usedChars.contains('j')){ + addToUsedChars('j'); + return 'j'; } - if (!currentClue.contains('l')){ - return 'l'; + if (!currentClue.contains('u') && !usedChars.contains('u')) { + addToUsedChars('u'); + return 'u'; } - if(!currentClue.contains('n')){ - return 'n'; + if (!currentClue.contains('y') && !usedChars.contains('y')) { + addToUsedChars('y'); + return 'y'; } - if(!currentClue.contains('p')){ + if(!currentClue.contains('p') && !usedChars.contains('p')){ + addToUsedChars('p'); return 'p'; } - if(!currentClue.contains('g')){ + if(!currentClue.contains('g') && !usedChars.contains('g')){ + addToUsedChars('g'); return 'g'; } - if(!currentClue.contains('h')){ + if(!currentClue.contains('h') && !usedChars.contains('h')){ + addToUsedChars('h'); return 'h'; } - if(!currentClue.contains('z')){ + if(!currentClue.contains('z') && !usedChars.contains('z')){ + addToUsedChars('z'); return 'z'; } - if(!currentClue.contains('m')){ + if(!currentClue.contains('m') && !usedChars.contains('m')){ + addToUsedChars('m'); return 'm'; } - if(!currentClue.contains('x')){ + if(!currentClue.contains('x') && !usedChars.contains('x')){ + addToUsedChars('x'); return 'x'; } - if(!currentClue.contains('c')){ - return 'c'; - } - if(!currentClue.contains('d')){ - return 'd'; - } - if(!currentClue.contains('b')){ - return 'b'; - } - if(!currentClue.contains('f')){ - return 'f'; - } - if(!currentClue.contains('j')){ - return 'j'; - } - if(!currentClue.contains('k')){ + if(!currentClue.contains('k') && !usedChars.contains('k')){ + addToUsedChars('k'); return 'k'; } - if(!currentClue.contains('q')){ + if(!currentClue.contains('q') && !usedChars.contains('q')){ + addToUsedChars('q'); return 'q'; } - if(!currentClue.contains('v')){ + if(!currentClue.contains('v') && !usedChars.contains('v')){ + addToUsedChars('v'); return 'v'; } - if(!currentClue.contains('w')){ + if(!currentClue.contains('w') && !usedChars.contains('w')){ + addToUsedChars('w'); return 'w'; } throw new IllegalStateException("All consonants exhausted."); } + public void addToUsedChars(char addThisChar){ + usedChars.add(addThisChar); + } + } diff --git a/src/test/java/com/hangman/players/YourPlayerTest.java b/src/test/java/com/hangman/players/YourPlayerTest.java index 6066234..6db1243 100644 --- a/src/test/java/com/hangman/players/YourPlayerTest.java +++ b/src/test/java/com/hangman/players/YourPlayerTest.java @@ -13,14 +13,14 @@ public void GuessesAWhenThereAreNoSuccessfulCharactersGuessedYet() { char guess = player.GetGuess(Arrays.asList('_', '_', '_')); - assertEquals('a', guess); + assertEquals('e', guess); } @Test public void GuessesAWhenThereAreSuccessfulCharactersGuessedThatAreNotA() { YourPlayer player = new YourPlayer(); - char guess = player.GetGuess(Arrays.asList('m', '_', 'n')); + char guess = player.GetGuess(Arrays.asList('m', 'e', '_', 'n')); assertEquals('a', guess); } @@ -35,48 +35,21 @@ public void DoNotGuessAIfAlreadyGuessed(){ } @Test - public void ReturnsTrueIfMoreVowelsToBeReturned(){ - YourPlayer player = new YourPlayer(); - List currentClue = Arrays.asList('a', 'e', 'i', '_', 'o'); - boolean result = player.moreVowelsToBeReturned(currentClue); - - assertEquals(true, result); - } - - @Test - public void ReturnsFalseIfMoreVowelsToBeReturned(){ + public void ReturnConsonantInOrderOfPopularity(){ YourPlayer player = new YourPlayer(); List currentClue = Arrays.asList('a', 'e', 'i', '_', 'o', 'u', 'y'); - boolean result = player.moreVowelsToBeReturned(currentClue); - - assertEquals(false, result); - } - - @Test - public void GetNextVowelInList(){ - YourPlayer player = new YourPlayer(); - List currentClue = Arrays.asList('a', '_', '_', 'i'); - - char result = player.nextVowelToReturn(currentClue); - assertEquals('e', result); - } + char guess = player.GetGuess(currentClue); - @Test (expected = IllegalStateException.class) - public void ThrowsExceptionWhenNoMoreVowelsToBeReturned(){ - YourPlayer player = new YourPlayer(); - List currentClue = Arrays.asList('a', 'e', 'i', '_', 'o', 'u', 'y'); - player.nextVowelToReturn(currentClue); + assertEquals('s', guess); } @Test - public void ReturnConsonantInOrderOfPopularity(){ + public void ShouldAddToListOfUsedChars(){ YourPlayer player = new YourPlayer(); - List currentClue = Arrays.asList('a', 'e', 'i', '_', 'o', 'u', 'y'); - char guess = player.GetGuess(currentClue); + player.addToUsedChars('a'); - assertEquals('s', guess); + assertEquals(true, player.usedChars.contains('a')); } - }