コード例 #1
0
        /// <summary>
        /// Builds the file To Generate Game Data
        /// </summary>
        /// <param name="divisions">All Division information</param>
        /// <param name="prizeLevels">All Prize Level information</param>
        /// <param name="gameInfo">All game Inforamtion</param>
        /// <param name="fileName">The full output file name and pat</param>
        public void buildGameData(
            Divisions.DivisionsModel divisions,
            PrizeLevels.PrizeLevels prizeLevels,
            GameSetup.GameSetupModel gameInfo,
            string fileName)
        {
            int numberOfDivisions = divisions.getNumberOfDivisions() + 1;

            List <int[]>[] divisionLevels = new List <int[]> [numberOfDivisions];
            List <Thread>  threads        = new List <Thread>();

            for (int i = 0; i < numberOfDivisions; i++)
            {
                int    divisionIndex = i;
                Thread t;
                if (divisionIndex == numberOfDivisions - 1)
                {
                    t = new Thread(() => divisionLevels[divisionIndex] = getDivisionLossingPermutations(gameInfo, prizeLevels).OrderBy(a => Guid.NewGuid()).ToList());
                }
                else
                {
                    t = new Thread(() => divisionLevels[divisionIndex] = getDivisionWinningPermutations(divisionIndex, gameInfo.totalPicks, (int)gameInfo.maxPermutations, divisions.getDivision(divisionIndex), prizeLevels).OrderBy(a => Guid.NewGuid()).ToList());
                }
                t.Start();
                threads.Add(t);
            }
            for (int i = 0; i < threads.Count; i++)
            {
                threads.ElementAt(i).Join();
            }
            writeFile(fileName, divisionLevels, new List <string>());
        }
コード例 #2
0
        /// <summary>
        /// Generates losing permutations for a game
        /// </summary>
        /// <param name="gameInfo">All game Information</param>
        /// <param name="prizeLevels">All prizeLevels</param>
        /// <returns>List of int arrays representing losing permutations</returns>
        private List <int[]> getDivisionLossingPermutations(
            GameSetup.GameSetupModel gameInfo,
            PrizeLevels.PrizeLevels prizeLevels
            )
        {
            List <int[]> lossPermutations   = new List <int[]>();
            List <int>   extraPicks         = getExtraPicks(new int[1], prizeLevels).ToList();
            List <int[]> baseLossconditions = new List <int[]>();
            int          numberOfPermutationsForNearWinAmount = (int)gameInfo.maxPermutations;

            if (gameInfo.isNearWin)
            {
                numberOfPermutationsForNearWinAmount = (int)(gameInfo.maxPermutations);
                baseLossconditions.AddRange(getBaseNearWinLossPermutations(gameInfo.nearWins, gameInfo.totalPicks, prizeLevels));
            }
            else
            {
                int[] baseLoss = new int[gameInfo.totalPicks];
                baseLossconditions.Add(baseLoss);
            }
            lossPermutations = getAllLossPermutations(baseLossconditions, prizeLevels, gameInfo.nearWins, numberOfPermutationsForNearWinAmount);
            List <int[]> Losses = lossPermutations.Take((int)gameInfo.maxPermutations).ToList();

            return(Losses);
        }