예제 #1
0
        private double EvaluateReward(SlotInternalNames[] slotsChosen, out SlotResults slotResult)
        {
            //For this implementation, reward the user only if all of the slots match
            SlotInternalNames firstSlot = slotsChosen[0];

            for (int i = 1; i < slotsChosen.Length; i++)
            {
                //Slots don't match, so no reward
                if (slotsChosen[i] != firstSlot)
                {
                    slotResult = SlotResults.Nothing;
                    return(0d);
                }
            }

            //Get the reward modifier for this slot
            double modifier = SlotRewardModifiers[firstSlot];

            //If the user didn't actually win anything, show it as a loss
            if (modifier <= 0d)
            {
                slotResult = SlotResults.Nothing;
            }
            //If the user got the highest reward modifier, they hit the jackpot!
            else if (modifier == HighestRewardMod)
            {
                slotResult = SlotResults.Jackpot;
            }
            //Standard result
            else
            {
                slotResult = SlotResults.Standard;
            }

            return(modifier);
        }
예제 #2
0
파일: GameMath.cs 프로젝트: lfwelove/GDK
    /// <summary>
    /// The theme specific game evaluation logic.
    /// </summary>
    public SlotResults RunOneGame(int bet)
    {
        // Create the slot results.
        SlotResults slotResults = new SlotResults();

        // Create the evaluators for the base game.
        PaylineEvaluator bgPaylineEval = new PaylineEvaluator();
        ScatterEvaluator bgScatterEval = new ScatterEvaluator();

        // Create the evaluators for the free games.
        PaylineEvaluator fgPaylineEval = new PaylineEvaluator();
        ScatterEvaluator fgScatterEval = new ScatterEvaluator();

        // Generate the random numbers.
        List <int> randomNumbers = new List <int>();

        for (int reel = 0; reel < paytable.BaseGameReelGroup.Reels.Count; ++reel)
        {
            ReelStrip reelStrip = paytable.BaseGameReelGroup.Reels[reel].ReelStrip;
            randomNumbers.Add(rng.GetRandomNumber(reelStrip.Symbols.Count));
        }

        ReelWindow reelWindow = new ReelWindow(paytable.BaseGameReelGroup, randomNumbers);

        // Evaluate the base game (payline and scatter evaluation).
        SlotResult paylineResults = bgPaylineEval.Evaluate(paytable, reelWindow, rng);
        SlotResult scatterResults = bgScatterEval.Evaluate(paytable, reelWindow, rng);

        slotResults.Results.Add(paylineResults);
        slotResults.Results.Add(scatterResults);

        slotResults.TotalWin += paylineResults.TotalWin;
        slotResults.TotalWin += scatterResults.TotalWin;

        // Evaluate the free games (if any).
        if (scatterResults.GetComponent <ScattersComponent>() != null)
        {
            // Add total number of free games.
            int freeGamesAwarded = 5;

            for (int i = 0; i < freeGamesAwarded; ++i)
            {
                // Generate the random numbers.
                randomNumbers = new List <int>();
                for (int reel = 0; reel < paytable.FreeGamesReelGroup.Reels.Count; ++reel)
                {
                    ReelStrip reelStrip = paytable.FreeGamesReelGroup.Reels[reel].ReelStrip;
                    randomNumbers.Add(rng.GetRandomNumber(reelStrip.Symbols.Count));
                }

                reelWindow = new ReelWindow(paytable.FreeGamesReelGroup, randomNumbers);

                // Evaluate the free game (payline and scatter evaluation).
                SlotResult fgPaylineResults = fgPaylineEval.Evaluate(paytable, reelWindow, rng);
                SlotResult fgScatterResults = fgScatterEval.Evaluate(paytable, reelWindow, rng);
                slotResults.Results.Add(fgPaylineResults);
                slotResults.Results.Add(fgScatterResults);

                slotResults.TotalWin += paylineResults.TotalWin;
                slotResults.TotalWin += scatterResults.TotalWin;
            }
        }

        return(slotResults);
    }