コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: Mastermind.cs プロジェクト: brianrodham/code-katas
        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);
        }
コード例 #3
0
ファイル: Mastermind.cs プロジェクト: brianrodham/code-katas
 private bool IsLosingState(GuessResult result)
 {
     return(result.Correct < 4 && guessCount >= MAX_GUESSES);
 }
コード例 #4
0
ファイル: Mastermind.cs プロジェクト: brianrodham/code-katas
 private bool IsWinningState(GuessResult result)
 {
     return(result.Correct == 4 && result.Misplaced == 0);
 }