Esempio n. 1
0
        public bool NewCode()
        {
            _codes.RemoveAll(pred => pred.CookieId == GetCookieById(CookieKeys.RngId));

            CodebreakerCode newCode = new CodebreakerCode(GetCookieById(CookieKeys.RngId), _rng);

            _codes.Add(newCode);

            return(true);
        }
Esempio n. 2
0
        public object GetFeedback()
        {
            List <ReturnScore> rScores = new List <ReturnScore>();
            List <string>      guesses = new List <string>();

            CodebreakerCode code = GetCode();

            return(new {
                rScores = code.RScores.ToArray()
            });
        }
Esempio n. 3
0
        public ReturnScore MakeGuess(string guess)
        {
            var guessPieces = guess.ToCharArray();
            var nums        = new List <int>();

            foreach (char s in guessPieces)
            {
                nums.Add(s - 49);
            }
            int[] pegs = nums.ToArray();

            if (pegs.Length != 4)
            {
                throw new ArgumentException("There may be only be 4 pegs submitted to CheckCode");
            }

            foreach (var peg in pegs)
            {
                if (peg < 0 || peg > 7)
                {
                    throw new ArgumentException("Wrong peg value, peg values may only be 0 through 7");
                }
            }

            CodebreakerCode code = GetCode();

            if (code == null)
            {
                NewCode();
                code = GetCode();
            }

            // compare the guess and actual code
            ReturnScore rScore = new ReturnScore(guess, 0, 0);

            // count bulls
            for (int i = 0; i < pegs.Length; i++)
            {
                if (pegs[i] == code.Code[i])
                {
                    rScore.Bulls++;
                }
            }

            // count cows
            for (int i = 0; i < 8; i++)
            {
                var count1 = pegs.Count(checkMe => {
                    return(checkMe == i);
                });
                var count2 = code.Code.Count(checkMe => {
                    return(checkMe == i);
                });
                var countOfCowsForOneColor = Math.Min(
                    count1,
                    count2
                    );
                rScore.Cows += countOfCowsForOneColor;
            }
            rScore.Cows -= rScore.Bulls;

            code.RScores.Add(rScore);

            // if correctly guessed, generate new code
            if (rScore.Bulls == 4)
            {
                NewCode();
            }

            return(rScore);
        }