Exemple #1
0
        public void LoadBestPathDNA()
        {
            this.DNA = new Chromosome[_dnaStrandLength];
            var shortestPathStrategy = new ChutesAndLadders.Strategy.ShortestPath.Engine();

            var board = new Entities.GameBoard();
            int index = 0;

            for (int startingPoint = 0; startingPoint < 100; startingPoint++)
            {
                for (byte spin = 1; spin <= 6; spin++)
                {
                    var legalEndpoints = board.GetLegalEndpoints(startingPoint, spin);
                    if ((legalEndpoints.Count() > 1) && (!legalEndpoints.Contains(100)))
                    {
                        var situation = new Entities.GameSituation()
                        {
                            BoardLocation = startingPoint, Spin = spin, LegalMoves = legalEndpoints, PlayerLocations = new int[] { }
                        };
                        var selectedEndpoint = shortestPathStrategy.GetMove(situation);

                        this.DNA[index] = new Chromosome(startingPoint, spin, legalEndpoints, selectedEndpoint);
                        index++;
                    }
                }
            }

            LoadRulesFromDNA();
        }
        public static void SupplementalDemo_SingleGame(this GameBoard board)
        {
            var greedyStrategy = new ChutesAndLadders.Strategy.Greedy.Engine();
            var linearStrategy = new ChutesAndLadders.Strategy.Linear.Engine();

            var geneticStrategy = new ChutesAndLadders.Strategy.Rules.Engine("Best Found");

            geneticStrategy.AddBestStrategyRules();

            var shortestPathStrategy = new ChutesAndLadders.Strategy.ShortestPath.Engine();

            // Remember that player 1 has a big advantage
            var player1 = new Player("Player 1", greedyStrategy);
            var player2 = new Player("Player 2", linearStrategy);
            var player3 = new Player("Player 3", geneticStrategy);
            var player4 = new Player("Player 4", shortestPathStrategy);
            var players = new Player[] { player1, player2, player3, player4 };

            var gameEngine = new Game(board);

            // Set the last parameter to a value 1-6 to have all rolls be that value
            // This allow us to compare the strategies when all use the same roll
            // It would be better if the roll varied by round but all players
            // got the same roll in a given round
            var results = gameEngine.Play(players, 1, 16, true, 0);

            Console.WriteLine(results.ToString());
            Console.WriteLine();
            Console.WriteLine(player4.Strategy.ToString());
        }
        public static void Demo4a_ShortestPath(this GameBoard board)
        {
            var greedyStrategy = new ChutesAndLadders.Strategy.Greedy.Engine();
            var linearStrategy = new ChutesAndLadders.Strategy.Linear.Engine();

            var geneticStrategy = new ChutesAndLadders.Strategy.Rules.Engine("Best Found");

            geneticStrategy.AddBestStrategyRules();

            var shortestPathStrategy = new ChutesAndLadders.Strategy.ShortestPath.Engine();

            var player1 = new Player("Player 1", shortestPathStrategy);
            var player2 = new Player("Player 2", linearStrategy);
            var player3 = new Player("Player 3", geneticStrategy);
            var player4 = new Player("Player 4", greedyStrategy);
            var players = new Player[] { player1, player2, player3, player4 };

            var engine = new SimulationCollection();

            engine.RunSimulations(players, 100000, true);
        }