Ejemplo n.º 1
0
        public void testBot()
        {
            int attemptsCount = 0;

            char[]  solution = { '5', '2', '1', '1', '7', '4', '5', '3' };
            Attempt attempt;

            MastermindFitnessCalculator mastermindFitnessCalculator = new MastermindFitnessCalculator();

            char[] firstGuess = { '1', '1', '1', '1', '2', '2', '3', '3' };
            attempt = testGuess(firstGuess, solution);
            mastermindFitnessCalculator.addPreviousAttempt(attempt);

            do
            {
                GeneticAlgorithm ga = new GeneticAlgorithm(mastermindFitnessCalculator);

                char[] guess = ga.calculateNextGuess(20);

                attempt = testGuess(guess, solution);
                mastermindFitnessCalculator.addPreviousAttempt(attempt);

                attemptsCount++;
                Console.WriteLine("Attempt: {0}, Guess: {1}, Exact: {2}, Near: {3}", attemptsCount, printArray(attempt.Guess), attempt.Exact, attempt.Near);
            }while (attempt.Exact != 8 && attemptsCount <= 25);

            Console.WriteLine("Number of Attemps: " + attemptsCount);

            Assert.AreEqual(8, attempt.Exact);
            Assert.IsTrue(attemptsCount <= 25, "Bot didn't guess the right secret code in less than 25 attempts.");
        }
Ejemplo n.º 2
0
        public void botGuess()
        {
            if (!_games.Keys.Contains(Context.ConnectionId))
            {
                Clients.Client(Context.ConnectionId).postHistory("Error", "Start a new game before sending guesses");
                return;
            }

            GameData gameData = _games[Context.ConnectionId];
            string   guess;

            if (gameData.previousAttempts.Count == 0)
            {
                guess = "11112233"; // Fixed first guess;
            }
            else
            {
                MastermindFitnessCalculator mastermindFitnessCalculator = new MastermindFitnessCalculator();
                mastermindFitnessCalculator.setPreviousAttempts(gameData.previousAttempts);

                GeneticAlgorithm ga = new GeneticAlgorithm(mastermindFitnessCalculator);

                char[] guessArray = ga.calculateNextGuess(20);
                guess = new string(guessArray);
            }

            GuessRequest request = new GuessRequest()
            {
                game_key = _games[Context.ConnectionId].game_key, code = AxiomzenMastermind.convertGuess(guess)
            };
            GuessResponse response = AxiomzenMastermind.guess(request);

            gameData.previousAttempts.Add(new Attempt()
            {
                Guess = guess.ToCharArray(), Exact = response.result.exact, Near = response.result.near
            });

            Clients.Client(Context.ConnectionId).postHistory("Guess", string.Format("Code: {0}, Exact: {1}, Near: {2}, Attempts: {3}", guess, response.result.exact, response.result.near, response.num_guesses));

            if (response.solved)
            {
                Clients.Client(Context.ConnectionId).postHistory("Congratulations!", "You guessed the secret code!");
            }
        }