Example #1
0
        /// <summary>
        /// Метод устанваливает ставки
        /// </summary>
        /// <param name="col"></param>
        public static void CalculateGame(IEnumerable <Setter> col)
        {
            Bets = new List <Bet>();
            foreach (var item in col)
            {
                var g = Gamblers.Find(s => s.Number == item.Gambler); //Выбираем игрока
                var b = Bugs.Find(s => s.Number == item.Bug);         //ВЫбираем участника

                var row = new Bet(b, g, item.Bet);                    //создаем ставку
                Bets.Add(row);                                        //добавляем ставку
            }

            //Генерируем случайные числа для каждого участника
            foreach (var item in Bugs)
            {
                item.RandomPosition();
            }

            //Определяем побудителей
            //-------------- первое место -----------------
            var Positions = Bugs.OrderByDescending(s => s.Position).Select(s => s.Position).Distinct().ToList();//Отсортировали по убыванию взяли тока уникальные значения
            var bugs      = Bugs.Where(s => s.Position == Positions[0]);

            var res = "";

            if (bugs.Count() > 1)
            {
                res = bugs.Aggregate("В забеге победили участники с номерами ", (current, item) => current + " " + item.Number);
            }
            else
            {
                res = "В забеге победил участник с номером " + bugs.First().Number;
            }
            ResultGames.Add(res + "\n");              //добавили в историю
            var summ       = Bets.Sum(s => s.Amount); //сумма всех ставок
            var first      = (summ / 2) / bugs.Count();
            var totalFirst = (summ / 2);

            if (bugs.Count() > 1)
            {
                res = "1-е место. Выйгрышь составил " + first.ToString("F2") + ". Количество победителей: " + bugs.Count();
            }
            else
            {
                res = "1-е место. Выйгрышь составил " + first.ToString("F2") + ". Количество победителей: 1";
            }
            ResultGames.Add(res + "\n");//добавили в историю

            //------------- второе место -----------------

            bugs = Bugs.Where(s => s.Position == Positions[1]);
            summ = summ - totalFirst;//сумма всех ставок
            var two      = (summ * 0.75) / bugs.Count();
            var totalTwo = (summ * 0.75);

            if (bugs.Count() > 1)
            {
                res = "2-е место. Выйгрышь составил " + two.ToString("F2") + ". Количество победителей: " + bugs.Count();
            }
            else
            {
                res = "2-е место. Выйгрышь составил " + two.ToString("F2") + ". Количество победителей: 1";
            }
            ResultGames.Add(res + "\n");//добавили в историю


            //-----------------третье место--------------
            bugs = Bugs.Where(s => s.Position == Positions[1]);
            summ = summ - (float)totalTwo;//сумма всех ставок
            var free = (summ) / bugs.Count();

            if (bugs.Count() > 1)
            {
                res = "3-е место. Выйгрышь составил " + free.ToString("F2") + ". Количество победителей: " + bugs.Count();
            }
            else
            {
                res = "3-е место. Выйгрышь составил " + free.ToString("F2") + ". Количество победителей: 1";
            }
            ResultGames.Add(res + "\n");//добавили в историю
        }