Esempio n. 1
0
        // Method printing Results Per Draw
        public static void PrintResultsPerAllDraws(LotteryGame kenoGame)
        {
            if (kenoGame == null)
            {
                throw new ArgumentNullException("lotteryGame", "LotteryGame cannot be null to output Draw Results");
            }

            Console.WriteLine("- - - - - - - - - - - - - - - - - - -");
            Console.WriteLine("Press ANY KEY to output DRAW Results");
            Console.WriteLine("- - - - - - - - - - - - - - - - - - -");
            Console.ReadKey(true);
            Console.WriteLine();

            foreach (Draw draw in kenoGame.Draws)
            {
                try
                {
                    Randomizer.DrawKinoNumbers(draw);
                    draw.SetKinoBonus();
                }
                catch (ArgumentNullException ex)
                {
                    Console.WriteLine(ex.Message);
                }

                Console.Write($"|Draw #{draw.ID}| : ");

                draw.DrawResults.ForEach(n => Console.Write($"{n} "));

                Console.WriteLine();
                Console.WriteLine($"Kino Bonus is : {draw.KinoBonus}");
                Console.WriteLine();
            }
        }
Esempio n. 2
0
        // Method setting number of Tickets per Player
        public static void NumberOfTickets(LotteryGame kenoGame)
        {
            if (kenoGame == null)
            {
                throw new ArgumentNullException("lotteryGame", "LotteryGame cannot be null to set Number Of Tickets");
            }

            Console.WriteLine();

            kenoGame.SetTickets();
        }
Esempio n. 3
0
        // Method printing Check Results for All Players Per Draw
        public static void PrintCheckResultsForAllDraws(LotteryGame kenoGame)
        {
            if (kenoGame == null)
            {
                throw new ArgumentNullException("lotteryGame", "LotteryGame cannot be null to output Players' Winning Numbers");
            }

            Console.WriteLine("TICKETS SUCCESS STATUS");
            Console.WriteLine("---------------------");

            var checker = kenoGame.CheckResults();

            Console.WriteLine();
            Console.WriteLine("ANALYTICAL RESULTS PER EACH PLAYER");
            Console.WriteLine("----------------------------------");

            foreach (Player player in kenoGame.Players)
            {
                Console.WriteLine();
                Console.WriteLine($"Player #{player.ID}:");
                Console.WriteLine("----------");

                foreach (LotteryTicket ticket in player.Tickets)
                {
                    Console.Write($"|Draw #{ticket.DrawID}| Ticket #{ticket} won {ticket.WinningNumbers.Count} number(s) out of 6");
                    Console.WriteLine();
                    Console.Write($"Winning Number(s) : ");

                    if (ticket.WinningNumbers.Count != 0)
                    {
                        ticket.WinningNumbers.ForEach(n => Console.Write($"{n} "));
                    }
                    else
                    {
                        Console.Write("----");
                    }

                    if (ticket.KinoBonusOption == true)
                    {
                        Console.WriteLine();
                        Console.Write(ticket.KinoBonusWinner ? "--> Kino Bonus number WON!" : "--> Kino Bonus number not won.");
                        Console.WriteLine();
                    }
                    else
                    {
                        Console.WriteLine();
                    }

                    Console.WriteLine();
                }
            }
        }
Esempio n. 4
0
        static void Main(string[] args)
        {
            // Creating Lottery Game Instance
            LotteryGame kenoGame = new LotteryGame("Keno Lottery");

            // Initializing Program
            var sb = new StringBuilder();

            sb.AppendLine($"Starting {kenoGame.Name} Program")
            .AppendLine("- - - - - - - - - - - - - - -")
            .AppendLine("Each player will participate with 1 Ticket per Draw.")
            .AppendLine("Each Draw's Prize Money is accumulated from previous Draws.")
            .AppendLine($"If Prize Money Available exceeds {Draw.MaxMoneyBank:C}, next Draw will reset it to initial amount.");

            Console.WriteLine(sb);

            try
            {
                // Setting total number of players
                ScreenOutput.NumberOfPlayers(kenoGame);

                // Setting total number of draws
                ScreenOutput.NumberOfDraws(kenoGame);

                // Setting tickets per Player and per Draw
                ScreenOutput.NumberOfTickets(kenoGame);

                // Printing player Tickets per Draw
                ScreenOutput.PrintPlayersTickets(kenoGame);

                // Printing Results Per Each Draw
                ScreenOutput.PrintResultsPerAllDraws(kenoGame);

                // Printing Check Results for Each Ticket
                ScreenOutput.PrintCheckResultsForAllDraws(kenoGame);

                // Printing Prize Money Tier Distrubution For Each Draw
                ScreenOutput.PrintPrizeTiersDistribution(kenoGame);

                // Printing Lottery Game Statistics
                ScreenOutput.PrintKenoStatistics(kenoGame);
            }
            catch (ArgumentNullException ex)
            {
                Console.WriteLine(ex.Message);
            }

            // Exiting Program
            Console.WriteLine();
            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }
Esempio n. 5
0
        // Method setting number of Players
        public static void NumberOfPlayers(LotteryGame kenoGame)
        {
            if (kenoGame == null)
            {
                throw new ArgumentNullException("lotteryGame", "LotteryGame cannot be null to set Number Of Players");
            }

            Console.Write("How many players will join the lottery?: ");
            int numberOfPlayers = 0;

            while (!int.TryParse(Console.ReadLine(), out numberOfPlayers) || numberOfPlayers < 1)
            {
                Console.Write("Not valid input. How many players will join the lottery?: ");
            }

            for (int i = 1; i <= numberOfPlayers; i++)
            {
                Player player = new Player();
                kenoGame.AddPlayer(player);
            }
        }
Esempio n. 6
0
        // Method printing All Player Selections Per Draw
        public static void PrintPlayersTickets(LotteryGame kenoGame)
        {
            if (kenoGame == null)
            {
                throw new ArgumentNullException("lotteryGame", "LotteryGame cannot be null to output Players Selections");
            }

            foreach (Player player in kenoGame.Players)
            {
                Console.WriteLine($"Player #{player.ID} Selections:");
                Console.WriteLine("---------------------");

                foreach (LotteryTicket ticket in player.Tickets)
                {
                    try
                    {
                        Randomizer.SelectSixRandomNumbers(ticket);
                        Randomizer.KinoBonusChoice(ticket);
                    }
                    catch (ArgumentNullException ex)
                    {
                        Console.WriteLine(ex.Message);
                    }

                    Console.Write($"|Draw #{ticket.DrawID}| Ticket #{ticket} : ");

                    ticket.SelectedNumbers.ForEach(n => Console.Write($"{n} "));

                    Console.WriteLine();
                    Console.WriteLine(ticket.KinoBonusOption ? "--> Kino Bonus Option: YES" : "--> Kino Bonus Option: NO");
                    Console.WriteLine();
                }

                Console.WriteLine();
            }
        }
Esempio n. 7
0
        // Method setting number of Draws
        public static void NumberOfDraws(LotteryGame kenoGame)
        {
            if (kenoGame == null)
            {
                throw new ArgumentNullException("lotteryGame", "LotteryGame cannot be null to set Number Of Draws");
            }

            Console.WriteLine();
            Console.Write("How many draws will take place? : ");
            int numberOfDraws = 0;

            while (!int.TryParse(Console.ReadLine(), out numberOfDraws) || numberOfDraws < 1)
            {
                Console.Write("Not valid input. How many draws will take place? : ");
            }

            for (int i = 1; i <= numberOfDraws; i++)
            {
                Draw draw = new Draw();
                kenoGame.AddDraw(draw);
            }

            Console.WriteLine();
        }
Esempio n. 8
0
        // Method printing Keno Game Statistics
        public static void PrintKenoStatistics(LotteryGame kenoGame)
        {
            if (kenoGame == null)
            {
                throw new ArgumentNullException("lotteryGame", "LotteryGame cannot be null to output Statistics");
            }

            Console.WriteLine();
            Console.WriteLine("----------------");
            Console.WriteLine("DRAWS STATISTICS");
            Console.WriteLine("----------------");

            var stats = kenoGame.ComputeStatistics();

            Console.WriteLine();
            Console.WriteLine("THREE MOST FREQUENT NUMBERS :");
            Console.WriteLine("(may include numbers that co-exist in the 3rd place)");
            Console.WriteLine();

            foreach (int count in stats.ThreeMostNumbers.Values.Distinct())
            {
                Console.Write($"#{count} times : ");

                foreach (int number in stats.ThreeMostNumbers.Keys)
                {
                    if (stats.ThreeMostNumbers[number] == count)
                    {
                        Console.Write($"{number} ");
                    }
                }

                Console.WriteLine();
            }

            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("THREE LESS FREQUENT NUMBERS :");
            Console.WriteLine("(may include numbers that co-exist in the 3rd place)");
            Console.WriteLine();

            foreach (int count in stats.ThreeLessNumbers.Values.Distinct())
            {
                Console.Write($"#{count} times : ");

                foreach (int number in stats.ThreeLessNumbers.Keys)
                {
                    if (stats.ThreeLessNumbers[number] == count)
                    {
                        Console.Write($"{number} ");
                    }
                }

                Console.WriteLine();
            }

            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("MOST FREQUENT KINO NUMBER(S) :");
            Console.WriteLine("(may include numbers that co-exist)");
            Console.WriteLine();

            foreach (int count in stats.MostKinoBonus.Values.Distinct())
            {
                Console.Write($"#{count} times : ");

                foreach (int number in stats.MostKinoBonus.Keys)
                {
                    if (stats.MostKinoBonus[number] == count)
                    {
                        Console.Write($"{number} ");
                    }
                }

                Console.WriteLine();
            }

            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("LESS FREQUENT KINO NUMBER(S) :");
            Console.WriteLine("(may include numbers that co-exist)");
            Console.WriteLine();

            foreach (int count in stats.LessKinoBonus.Values.Distinct())
            {
                Console.Write($"#{count} times : ");

                foreach (int number in stats.LessKinoBonus.Keys)
                {
                    if (stats.LessKinoBonus[number] == count)
                    {
                        Console.Write($"{number} ");
                    }
                }

                Console.WriteLine();
            }
        }
Esempio n. 9
0
        // Method printing Prize Money Tier Lists of Winners
        public static void PrintPrizeTiersDistribution(LotteryGame kenoGame)
        {
            if (kenoGame == null)
            {
                throw new ArgumentNullException("lotteryGame", "LotteryGame cannot be null to output Prize Tiers Distribution");
            }

            Console.WriteLine();
            Console.WriteLine("-------------------------------");
            Console.WriteLine("PRIZE TIER & MONEY DISTRIBUTION");
            Console.WriteLine("-------------------------------");

            kenoGame.SetPrizeTierDistribution();

            foreach (Draw draw in kenoGame.Draws)
            {
                Console.WriteLine();
                Console.WriteLine($"DRAW #{draw.ID} DISTRIBUTION");
                Console.WriteLine("--------------------");
                Console.WriteLine($"---> Moneybank : {draw.MoneyBank:C}");
                Console.WriteLine();

                foreach (PrizeTier prizeTier in draw.Distribution.PrizeTiers)
                {
                    switch (prizeTier.Type)
                    {
                    case PrizeTierCategory.SixOutOfSixWithKinoBonus:
                        Console.WriteLine($"[{prizeTier.Tickets.Count}] ticket(s) got 6/6 Plus Kino Bonus");
                        break;

                    case PrizeTierCategory.SixOutOfSix:
                        Console.WriteLine($"[{prizeTier.Tickets.Count}] ticket(s) got 6/6");
                        break;

                    case PrizeTierCategory.FiveOutOfSixWithKinoBonus:
                        Console.WriteLine($"[{prizeTier.Tickets.Count}] ticket(s) got 5/6 Plus Kino Bonus");
                        break;

                    case PrizeTierCategory.FiveOutOfSix:
                        Console.WriteLine($"[{prizeTier.Tickets.Count}] ticket(s) got 5/6");
                        break;

                    case PrizeTierCategory.FourOutOfSixWithKinoBonus:
                        Console.WriteLine($"[{prizeTier.Tickets.Count}] ticket(s) got 4/6 Plus Kino Bonus");
                        break;

                    case PrizeTierCategory.FourOutOfSix:
                        Console.WriteLine($"[{prizeTier.Tickets.Count}] ticket(s) got 4/6");
                        break;

                    case PrizeTierCategory.ThreeOutOfSixWithKinoBonus:
                        Console.WriteLine($"[{prizeTier.Tickets.Count}] ticket(s) got 3/6 Plus Kino Bonus");
                        break;

                    case PrizeTierCategory.ThreeOutOfSix:
                        Console.WriteLine($"[{prizeTier.Tickets.Count}] ticket(s) got 3/6");
                        break;

                    case PrizeTierCategory.TwoOutOfSixWithKinoBonus:
                        Console.WriteLine($"[{prizeTier.Tickets.Count}] ticket(s) got 2/6 Plus Kino Bonus");
                        break;

                    case PrizeTierCategory.TwoOutOfSix:
                        Console.WriteLine($"[{prizeTier.Tickets.Count}] ticket(s) got 2/6");
                        break;

                    case PrizeTierCategory.OneOutOfSixWithKinoBonus:
                        Console.WriteLine($"[{prizeTier.Tickets.Count}] ticket(s) got 1/6 Plus Kino Bonus");
                        break;

                    case PrizeTierCategory.OneOutOfSix:
                        Console.WriteLine($"[{prizeTier.Tickets.Count}] ticket(s) got 1/6");
                        break;

                    default:
                        Console.WriteLine($"[{prizeTier.Tickets.Count}] ticket(s) got 0/6");
                        break;
                    }

                    if (prizeTier.Type != PrizeTierCategory.ZeroOutOfSix)
                    {
                        Console.WriteLine($"--> Prize Tier MoneyBank : {prizeTier.PrizeMoney:C}");
                        Console.WriteLine($"--> Prize Money Distributed: {prizeTier.MoneyDistributed:C}");
                        Console.WriteLine(prizeTier.Tickets.Count != 0 ? $"Each winning ticket got {prizeTier.MoneyDistributed / prizeTier.Tickets.Count:C}" : "Prize money transfered to next draw.");
                        Console.WriteLine();
                    }
                    else
                    {
                        Console.WriteLine("No Prize Money Distribution for this category.");
                    }
                }

                Console.WriteLine();
                Console.WriteLine($"Money given to [CHARITIES] from this draw : {draw.Distribution.CharityMoney:C}");
            }

            Console.WriteLine();
            Console.WriteLine("TOTAL PLAYER EARNINGS");
            Console.WriteLine("---------------------");
            Console.WriteLine();

            kenoGame.Players.ForEach(p => Console.WriteLine($"Player #{p.ID} Earnings : {p.Earnings:C}"));
        }