Ejemplo n.º 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));
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 3
0
 public ComputerCodebreaker(IGameOptions options, PegPattern initialGuess = null) : base(options)
 {
     _initialGuess = initialGuess;
 }
Ejemplo n.º 4
0
 public ComputerCodemaker(IGameOptions options) : base(options)
 {
     _code = Options.Palette.GetRandomPattern(Options);
 }
Ejemplo n.º 5
0
 public override GuessResult ProcessGuess(PegPattern guess)
 {
     return(guess.CompareTo(_code));
 }
Ejemplo n.º 6
0
 public ComputerCodemaker(IGameOptions options, PegPattern code) : base(options)
 {
     _code = code ?? throw new ArgumentNullException(nameof(code));
 }
Ejemplo n.º 7
0
 public abstract GuessResult ProcessGuess(PegPattern guess);