示例#1
0
 static MapPlayerGameConfigToCardSet GetStartingHandForSplit(StartingCardSplit split)
 {
     return(delegate(int playerIndex, GameConfig gameConfig)
     {
         return GetCardsForSplit(split, gameConfig);
     });
 }
示例#2
0
        public static GameConfig Create(StartingCardSplit split, params Card[] cards)
        {
            var result = new GameConfigBuilder();

            result.kingdomPiles = cards;
            result.CardSplit    = split;
            return(result.ToGameConfig());
        }
示例#3
0
        public static double ComparePlayers(
            object player1OrString,
            object player2OrString,
            bool useShelters          = false,
            bool useColonyAndPlatinum = false,
            StartingCardSplit split   = StartingCardSplit.Random,
            bool firstPlayerAdvantage = false,
            IEnumerable <CardCountPair>[] startingDeckPerPlayer = null,
            bool shouldParallel         = true,
            bool showVerboseScore       = true,
            bool showCompactScore       = false,
            bool showDistribution       = false,
            bool createHtmlReport       = true,
            int numberOfGames           = 1000,
            int logGameCount            = 10,
            bool debugLogs              = false,
            CreateGameLog createGameLog = null)
        {
            PlayerAction player1 = strategyLoader.GetPlayerAction(player1OrString);
            PlayerAction player2 = strategyLoader.GetPlayerAction(player2OrString);

            GameConfigBuilder builder = new GameConfigBuilder();

            PlayerAction.SetKingdomCards(builder, player1, player2);

            builder.useColonyAndPlatinum = useColonyAndPlatinum;
            builder.useShelters          = useShelters;
            builder.CardSplit            = split;

            if (startingDeckPerPlayer != null)
            {
                builder.SetStartingDeckPerPlayer(startingDeckPerPlayer);
            }

            var gameConfig = builder.ToGameConfig();

            return(ComparePlayers(
                       player1,
                       player2,
                       gameConfig,
                       firstPlayerAdvantage: firstPlayerAdvantage,
                       shouldParallel: shouldParallel,
                       showVerboseScore: showVerboseScore,
                       showCompactScore: showCompactScore,
                       showDistribution: showDistribution,
                       createHtmlReport: createHtmlReport,
                       logGameCount: logGameCount,
                       debugLogs: debugLogs,
                       numberOfGames: numberOfGames,
                       createGameLog: createGameLog));
        }
示例#4
0
        public double ComparePlayers(
            PlayerAction player1,
            PlayerAction player2,
            bool useShelters          = false,
            bool useColonyAndPlatinum = false,
            StartingCardSplit split   = StartingCardSplit.Random,
            bool rotateWhoStartsFirst = true,
            IEnumerable <CardCountPair>[] startingDeckPerPlayer = null,
            bool shouldParallel         = true,
            bool showVerboseScore       = true,
            bool showCompactScore       = false,
            bool showDistribution       = false,
            bool createHtmlReport       = true,
            bool createRankingReport    = false,
            int numberOfGames           = 1000,
            int logGameCount            = 10,
            bool debugLogs              = false,
            CreateGameLog createGameLog = null)
        {
            GameConfigBuilder builder = new GameConfigBuilder();

            builder.SetKingdomCards(player1, player2);

            builder.useColonyAndPlatinum = useColonyAndPlatinum;
            builder.useShelters          = useShelters;
            builder.CardSplit            = split;

            if (startingDeckPerPlayer != null)
            {
                builder.SetStartingDeckPerPlayer(startingDeckPerPlayer);
            }

            var gameConfig = builder.ToGameConfig();

            return(ComparePlayers(
                       player1,
                       player2,
                       gameConfig,
                       rotateWhoStartsFirst: rotateWhoStartsFirst,
                       shouldParallel: shouldParallel,
                       showVerboseScore: showVerboseScore,
                       showCompactScore: showCompactScore,
                       showDistribution: showDistribution,
                       createHtmlReport: createHtmlReport,
                       createRankingReport: createRankingReport,
                       logGameCount: logGameCount,
                       debugLogs: debugLogs,
                       numberOfGames: numberOfGames,
                       createGameLog: createGameLog));
        }
示例#5
0
        static MapPlayerGameConfigToCardSet GetStartingHandForSplit(StartingCardSplit split)
        {
            return(delegate(int playerIndex, GameConfig gameConfig)
            {
                switch (split)
                {
                case StartingCardSplit.Random: return null;

                case StartingCardSplit.Split52: return Starting52Split;

                case StartingCardSplit.Split43: return gameConfig.useShelters ? Starting43SplitShelter : Starting43SplitEstate;

                default:
                    throw new Exception();
                }
            });
        }
示例#6
0
        private static CardCountPair[] GetCardsForSplit(StartingCardSplit split, GameConfig gameConfig)
        {
            switch (split)
            {
            case StartingCardSplit.Random: return(null);

            case StartingCardSplit.Split52: return(Starting52Split);

            case StartingCardSplit.Split43: return(gameConfig.useShelters ? Starting43SplitShelter : Starting43SplitEstate);

            case StartingCardSplit.Split25: return(gameConfig.useShelters ? Starting25SplitShelter : Starting25Split);

            case StartingCardSplit.Split34: return(gameConfig.useShelters ? Starting34SplitShelter : Starting34SplitEstate);

            default:
                throw new Exception();
            }
        }
示例#7
0
 public double ComparePlayers(
     string player1,
     string player2,
     bool useShelters          = false,
     bool useColonyAndPlatinum = false,
     StartingCardSplit split   = StartingCardSplit.Random,
     bool rotateWhoStartsFirst = false,
     IEnumerable <CardCountPair>[] startingDeckPerPlayer = null,
     bool shouldParallel         = true,
     bool showVerboseScore       = true,
     bool showCompactScore       = false,
     bool showDistribution       = false,
     bool createHtmlReport       = true,
     bool createRankingReport    = false,
     int numberOfGames           = 1000,
     int logGameCount            = 10,
     bool debugLogs              = false,
     CreateGameLog createGameLog = null)
 {
     return(ComparePlayers(
                BuiltInStrategies.StrategyLoader.PlayerFromString(player1),
                BuiltInStrategies.StrategyLoader.PlayerFromString(player2),
                useShelters,
                useColonyAndPlatinum,
                split,
                rotateWhoStartsFirst,
                startingDeckPerPlayer,
                shouldParallel,
                showVerboseScore,
                showCompactScore,
                showDistribution,
                createHtmlReport,
                createRankingReport,
                numberOfGames,
                logGameCount,
                debugLogs,
                createGameLog));
 }
示例#8
0
 static MapPlayerGameConfigToCardSet GetStartingHandForSplit(StartingCardSplit split)
 {
     return delegate(int playerIndex, GameConfig gameConfig)
     {
         switch (split)
         {
             case StartingCardSplit.Random: return null;
             case StartingCardSplit.Split52: return Starting52Split;
             case StartingCardSplit.Split43: return gameConfig.useShelters ? Starting43SplitShelter : Starting43SplitEstate;
             default:
                 throw new Exception();
         }
     };
 }
示例#9
0
 public static GameConfig Create(StartingCardSplit split, params Card[] cards)
 {
     var result = new GameConfigBuilder();
     result.kingdomPiles = cards;
     result.CardSplit = split;
     return result.ToGameConfig();
 }
 static MapPlayerGameConfigToCardSet GetStartingHandForSplit(StartingCardSplit[] splits)
 {
     return delegate(int playerIndex, GameConfig gameConfig)
     {
         return GetCardsForSplit(splits[playerIndex], gameConfig);
     };
 }
        private static CardCountPair[] GetCardsForSplit(StartingCardSplit split, GameConfig gameConfig)
        {
            switch (split)
            {
                case StartingCardSplit.Random: return null;
                case StartingCardSplit.Split52: return Starting52Split;
                case StartingCardSplit.Split43: return gameConfig.useShelters ? Starting43SplitShelter : Starting43SplitEstate;
                case StartingCardSplit.Split25: return gameConfig.useShelters ? Starting25SplitShelter : Starting25Split;
                case StartingCardSplit.Split34: return gameConfig.useShelters ? Starting34SplitShelter : Starting34SplitEstate;

                default:
                    throw new Exception();
            }
        }
 public void SetCardSplitPerPlayer(StartingCardSplit[] splits)
 {
     this.shuffleLuck = GetStartingHandForSplit(splits);
 }
示例#13
0
 public double ComparePlayers(
     string player1,
     string player2,
     bool useShelters = false,
     bool useColonyAndPlatinum = false,
     StartingCardSplit split = StartingCardSplit.Random,
     bool rotateWhoStartsFirst = false,
     IEnumerable<CardCountPair>[] startingDeckPerPlayer = null,
     bool shouldParallel = true,
     bool showVerboseScore = true,
     bool showCompactScore = false,
     bool showDistribution = false,
     bool createHtmlReport = true,
     bool createRankingReport = false,
     int numberOfGames = 1000,
     int logGameCount = 10,
     bool debugLogs = false,
     CreateGameLog createGameLog = null)
 {
     return ComparePlayers(
         BuiltInStrategies.StrategyLoader.PlayerFromString(player1),
         BuiltInStrategies.StrategyLoader.PlayerFromString(player2),
         useShelters,
         useColonyAndPlatinum,
         split,
         rotateWhoStartsFirst,
         startingDeckPerPlayer,
         shouldParallel,
         showVerboseScore,
         showCompactScore,
         showDistribution,
         createHtmlReport,
         createRankingReport,
         numberOfGames,
         logGameCount,
         debugLogs,
         createGameLog);
 }
示例#14
0
        public double ComparePlayers(
            PlayerAction player1,
            PlayerAction player2,
            bool useShelters = false,
            bool useColonyAndPlatinum = false,
            StartingCardSplit split = StartingCardSplit.Random,
            bool rotateWhoStartsFirst = true,
            IEnumerable<CardCountPair>[] startingDeckPerPlayer = null,
            bool shouldParallel = true,
            bool showVerboseScore = true,
            bool showCompactScore = false,
            bool showDistribution = false,
            bool createHtmlReport = true,
            bool createRankingReport = false,
            int numberOfGames = 1000,
            int logGameCount = 10,
            bool debugLogs = false,
            CreateGameLog createGameLog = null)
        {
            GameConfigBuilder builder = new GameConfigBuilder();
            builder.SetKingdomCards(player1, player2);

            builder.useColonyAndPlatinum = useColonyAndPlatinum;
            builder.useShelters = useShelters;
            builder.CardSplit = split;

            if (startingDeckPerPlayer != null)
                builder.SetStartingDeckPerPlayer(startingDeckPerPlayer);

            var gameConfig = builder.ToGameConfig();

            return ComparePlayers(
                player1,
                player2,
                gameConfig,
                rotateWhoStartsFirst: rotateWhoStartsFirst,
                shouldParallel: shouldParallel,
                showVerboseScore: showVerboseScore,
                showCompactScore: showCompactScore,
                showDistribution: showDistribution,
                createHtmlReport: createHtmlReport,
                createRankingReport: createRankingReport,
                logGameCount: logGameCount,
                debugLogs: debugLogs,
                numberOfGames: numberOfGames,
                createGameLog: createGameLog);
        }