Example #1
0
        public override GuessResult ProcessGuess(PegPattern guess)
        {
            var positionCount = Shell.PromptInt("Number of pegs in correct position", 0, (0, guess.Size));
            var colorCount    = (guess.Size - positionCount > 1)
                ? Shell.PromptInt("Number of pegs in wrong position", 0, (0, guess.Size - positionCount))
                : 0;

            return(new GuessResult(positionCount, colorCount));
        }
Example #2
0
        public override PegPattern BuildInitialGuess()
        {
            GenerateAvailableGuesses();

            if (_initialGuess != null)
            {
                LastGuess = _initialGuess;
            }
            else if (Options.AllowDuplicates)
            {
                var left  = Options.Size / 2;
                var right = Options.Size - left;
                var pegs  = Options.Palette.GetPegs();
                LastGuess = new PegPattern(Options.Palette, Enumerable.Repeat(pegs[0], left).Concat(Enumerable.Repeat(pegs[1], right)).ToList());
            }
            else
            {
                LastGuess = new PegPattern(Options.Palette, Options.Palette.GetPegs().Take(Options.Size).ToList());
            }

            return(LastGuess);
        }
Example #3
0
 public ComputerCodebreaker(IGameOptions options, PegPattern initialGuess = null) : base(options)
 {
     _initialGuess = initialGuess;
 }
Example #4
0
 public ComputerCodemaker(IGameOptions options) : base(options)
 {
     _code = Options.Palette.GetRandomPattern(Options);
 }
Example #5
0
 public override GuessResult ProcessGuess(PegPattern guess)
 {
     return(guess.CompareTo(_code));
 }
Example #6
0
 public ComputerCodemaker(IGameOptions options, PegPattern code) : base(options)
 {
     _code = code ?? throw new ArgumentNullException(nameof(code));
 }
Example #7
0
 public abstract GuessResult ProcessGuess(PegPattern guess);