Пример #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>
        /// Builds the header information for the file
        /// </summary>
        /// <param name="prizes">All prize informaiton</param>
        /// <param name="divisions">All division information</param>
        /// <returns>Returns a list of string representing each line of the header</returns>
        private List <string> buildHeader(PrizeLevels.PrizeLevels prizes, Divisions.DivisionsModel divisions)
        {
            List <string> headerLines = new List <string>();

            headerLines.Add("The first number is the division indicator.");
            headerLines.Add("Prize level indicators and values:");
            int           prizeLevel = 1;
            StringBuilder sb;

            foreach (PrizeLevels.PrizeLevel p in prizes.prizeLevels)
            {
                sb = new StringBuilder();
                sb.Append("Prize Level Character: " + charFromInt(prizes.getLevelOfPrize(p) + 1));
                sb.Append(" Value: " + p.prizeValue);
                headerLines.Add(sb.ToString());
            }
            headerLines.Add("division level indicators and values:");
            foreach (Divisions.DivisionModel div in divisions.divisions)
            {
                sb = new StringBuilder();
                sb.Append("Division Number: " + prizeLevel++);
                sb.Append(" Value: " + div.TotalPrizeValue);
                sb.Append("Prize Levels at Division: ");
                foreach (PrizeLevels.PrizeLevel p in div.getPrizeLevelsAtDivision())
                {
                    sb.Append(charFromInt(prizes.getLevelOfPrize(p) + 1));
                }

                headerLines.Add(sb.ToString());
            }
            sb = new StringBuilder();
            sb.Append("Division Level Number: " + prizeLevel++);
            sb.Append(" Value: " + 0);
            headerLines.Add(sb.ToString());
            return(headerLines);
        }