Exemple #1
0
        public void Spin(int value = -1)
        {
            if (bets.Count < 1)
            {
                throw new Exception("No bets");
            }

            if (value == -1)
            {
                value = Generic.GetRandomNumber(0, 38);
            }

            CurrentNumber = RDeepPositions.GetPositionByID(value);

            LastNumbers.Add(CurrentNumber);

            ValidateBetsForPlayers();

            SettleBets();

            foreach (RDeepPlayer player in boardPlayers)
            {
                player.UpgradeProbabilities(LastNumbers);
            }
        }
Exemple #2
0
        public IEnumerable <RDeepBet> GoForBet(RDeepPlayer player, List <RDeepPosition> LastNumbers)
        {
            if (player.coins.Count < 1)
            {
                throw new Exception("Running out of coins!");
            }

            List <RDeepBet> result = new List <RDeepBet>();

            RDeepPosition maxProbableNumber = RDeepPosition.Six;
            float         maxProbability    = maxProbableNumber.defaultProbability;

            if (probabilities.Count < 1)
            {
                UpdateProbabilities(LastNumbers);
            }

            foreach (RDeepPosition number in wheelNumbers)
            {
                if (maxProbability < probabilities[number])
                {
                    maxProbability    = probabilities[number];
                    maxProbableNumber = number;
                }
            }

            List <Coin> betCoins = new List <Coin>();

            int randomTotalCoins;

            if (player.coins.Count(coin => coin.isOnBet == false && coin.Value <= 25) < 4)
            {
                randomTotalCoins = 1;
            }
            else
            {
                randomTotalCoins = Generic.GetRandomNumber(1, 2);
            }

            for (int i = 0; i < randomTotalCoins; i++)
            {
                List <Coin> activeCoins = player.coins.Where(coin => coin.isOnBet == false && coin.Value <= 25).ToList();
                int         randomCoin  = Generic.GetRandomNumber(0, activeCoins.Count);
                activeCoins[randomCoin].isOnBet = true;
                betCoins.Add(activeCoins[randomCoin]);
                System.Threading.Thread.Sleep(100);
            }

            result.Add(new RDeepBet(
                           player,
                           RDeepBetPositions.GetRDeepBetPositionByPositionIDs(new int[] { maxProbableNumber.ID }),
                           betCoins));

            return(result);
        }
Exemple #3
0
        internal static RDeepPosition GetPositionByID(int ID)
        {
            RDeepPosition result = null;

            foreach (RDeepPosition position in rDeepPositions)
            {
                if (position.ID == ID)
                {
                    result = position;
                    break;
                }
            }
            return(result);
        }
Exemple #4
0
        public void UpdateProbabilities(List <RDeepPosition> LastNumbers)
        {
            SetDefaultProbabilities();

            if (LastNumbers.Count == 0)
            {
                return;
            }

            RDeepPosition currentPos = LastNumbers[LastNumbers.Count - 1];

            foreach (PositionType positionType in Enum.GetValues(typeof(PositionType)))
            {
                if (positionType != PositionType.Green)
                {
                    UpdateProbabilitiesByPosType(positionType, LastNumbers, currentPos);
                }
            }
        }
Exemple #5
0
 private PositionType GetPositionType(PositionTypeSubCategory subCategory, RDeepPosition pos)
 {
     if (subCategory == PositionTypeSubCategory.Color)
     {
         if (pos.isRed)
         {
             return(PositionType.Red);
         }
         else
         {
             return(PositionType.Black);
         }
     }
     else if (subCategory == PositionTypeSubCategory.OddEven)
     {
         if (pos.isEven)
         {
             return(PositionType.Even);
         }
         else
         {
             return(PositionType.Odd);
         }
     }
     else if (subCategory == PositionTypeSubCategory.LowHigh)
     {
         if (pos.isLow)
         {
             return(PositionType.Low);
         }
         else
         {
             return(PositionType.High);
         }
     }
     else if (subCategory == PositionTypeSubCategory.Dozen)
     {
         if (pos.isFirstDozen)
         {
             return(PositionType.FirstDozen);
         }
         else if (pos.isSecondDozen)
         {
             return(PositionType.SecondDozen);
         }
         else
         {
             return(PositionType.ThirdDozen);
         }
     }
     else if (subCategory == PositionTypeSubCategory.Column)
     {
         if (pos.isFirstColumn)
         {
             return(PositionType.FirstColumn);
         }
         else if (pos.isSecondColumn)
         {
             return(PositionType.SecondColumn);
         }
         else
         {
             return(PositionType.ThirdColumn);
         }
     }
     else
     {
         return(PositionType.Straight);
     }
 }
Exemple #6
0
        private void UpdateProbabilitiesByPosType(PositionType positionType, List <RDeepPosition> LastNumbers, RDeepPosition currentPos)
        {
            int   HitCount    = 1;
            int   Factor      = 0;
            float UpgradeRate = 0;

            PositionTypeSubCategory subCategory = GetPositonSubCategoryByPositionType(positionType);
            PositionTypeCategory    category    = GetPositonTypeCategory(subCategory);

            PositionType hitPositionType = GetPositionType(subCategory, currentPos);

            List <RDeepPosition> fromNumbers = new List <RDeepPosition>();

            if (hitPositionType == PositionType.Straight)
            {
                fromNumbers.Add(currentPos);
            }
            else
            {
                fromNumbers = RDeepPositions.NumbersByPositionType(positionType).ToList();
            }

            List <RDeepPosition> toNumbers = wheelNumbers.Except(fromNumbers).ToList();

            if (positionType == hitPositionType)
            {
                // *** On Hit ***
                if (positionType != PositionType.Straight)
                {
                    HitCount = GetPositionTypeHitCount(subCategory, LastNumbers);
                }

                Factor = GetProbabilityUpgradeFactorsOnHit(category, HitCount);
            }
            // *** On Miss ***

            Factor += GetProbabilityUpgradeFactorsOnFewerHits(LastNumbers, category, positionType);

            float Rate = GetProbabilityUpgradeRate(fromNumbers.Count());

            UpgradeRate = Factor * Rate;

            ShiftProbability(fromNumbers, positionType, UpgradeRate);
            ShiftProbability(toNumbers, positionType, UpgradeRate * -1);
        }
Exemple #7
0
        private string DisplayGroupProbability(string posTypeShortName, PositionType positionType, RDeepPosition number)
        {
            string probability = string.Format("{0:+0.00000;-0.00000}", GroupsUpgradeProbability[positionType][number]);

            return(string.Concat(posTypeShortName, ": ", probability + "; "));
        }