public GuessResult Score(List <string> guess, List <string> secret) { var result = new GuessResult(); var remainingSecret = new List <string>(); var remainingGuess = new List <string>(); for (var i = 0; i < guess.Count(); i++) { if (guess[i] == secret[i]) { result.Correct++; } else { remainingSecret.Add(secret[i]); remainingGuess.Add(guess[i]); } } for (var i = 0; i < remainingGuess.Count(); i++) { var index = remainingSecret.IndexOf(remainingGuess[i]); if (index >= 0) { result.Misplaced++; remainingSecret[index] = ""; } } return(result); }
public GameState Guess(List <string> guess) { if (GameIsInActive()) { return(state); } GuessResult result = guesser.Score(guess, secret); guessCount++; if (IsWinningState(result)) { state = GameState.Victory; return(state); } if (IsLosingState(result)) { state = GameState.GameOver; return(state); } return(GameState.InProgress); }
private bool IsLosingState(GuessResult result) { return(result.Correct < 4 && guessCount >= MAX_GUESSES); }
private bool IsWinningState(GuessResult result) { return(result.Correct == 4 && result.Misplaced == 0); }