At EnactOn, we love adding fun features that make our client’s user experience more exciting! One of the newest additions is the **Daily Bonus Ladder** like freecash, where you can win extra coins daily by climbing a risk-reward ladder.

But how did we develop **Daily Bonus Ladder** feature, and what goes on behind the scenes? Let’s break it down in a simple, easy-to-understand way, so you can see the magic that powers it.

**What is the Daily Bonus Ladder?**

The Daily Bonus Ladder is a **game of chance** that rewards you with coins every day. Here’s how it works:

- You start with a
**base reward**(for example, 100 coins). - You can
**claim the reward**right away or take a risk and try to**double**it. - If you decide to risk it and win, your reward
**doubles**. But if you lose, you**lose everything**for the day.

What makes the game even more fun is that the **chances of doubling** the reward **get harder** the further you go up the ladder. It’s a balance between how much you’re willing to risk for bigger rewards!

**How We Built Daily Bonus Ladder Feature – The Tech Behind the Game**

Now, let’s talk about the **technical side**. While it sounds like magic, we used some simple math and coding to make this feature work!

### Step by Step Algorithm For the Bonus Ladder

Let’s break down how we built the **bonus ladder** step by step:

**Start with a Base Reward**: Every day, you start with a fixed amount of coins, like 100 coins.**Doubling the Reward**: If you decide to risk your coins, you have a chance to**double**them. For example, if you start with 100 coins and win, you now have 200 coins.**Decreasing Chances**: The more you win, the harder it gets to double your reward again. Here’s how:- On your
**first attempt**, you have a**high chance**of doubling (90% chance). - On your
**second attempt**, the chance of success goes down to**80%**. - On your
**third attempt**, the chance drops to**70%**, and so on.

- On your
- So, as you climb the ladder, the
**risk increases**. Will you keep going, or will you take the safe route and cash out? **Risk vs. Reward**: Each time you win, you can either**claim your reward**or**risk it**for a chance to double again. If you lose, you**lose everything**for that day, so it’s all about deciding how far to push your luck.

**How the Probability Works**

The chances of doubling your reward decrease with each level. We started with a **90% chance** on the first level, and then reduced it by **10%** at each level, so:

- Level 1: 90% chance to double.
- Level 2: 80% chance to double.
- Level 3: 70% chance to double.
- And so on…

This makes it **harder** to keep winning as you climb the ladder.

**How to Create the Daily Bonus Ladder**

For those curious about the technical side, here’s a **simple JavaScript code snippet** we used to power the ladder feature:

```
// Function to calculate the probability of winning at each ladder level
function getWinningProbability(level) {
// Start with a high probability of 90% and decrease by 10% with each level
return Math.max(90 - (level * 10), 10); // Ensure it doesn't go below 10%
}
// Function to simulate a daily bonus ladder
function dailyBonusLadder(baseReward, maxLevels) {
let currentReward = baseReward; // Start with the base reward
let currentLevel = 1; // Start at the first level
while (currentLevel <= maxLevels) {
const chanceToWin = getWinningProbability(currentLevel); // Get current winning chance
console.log(`Level ${currentLevel}: ${chanceToWin}% chance to win. Current reward: ${currentReward} coins.`);
// Generate a random number between 1 and 100 to determine the outcome
const randomOutcome = Math.random() * 100;
if (randomOutcome <= chanceToWin) {
// User wins this level, double the reward
currentReward *= 2;
console.log(`You won! Your reward is now ${currentReward} coins.`);
} else {
// User loses, exit the ladder with nothing for this round
console.log('You lost! You forfeit your reward for today.');
currentReward = 0;
break;
}
// Ask user if they want to continue to the next level or claim their reward
const continuePlaying = confirm('Do you want to risk and go to the next level?');
if (!continuePlaying) {
console.log(`You claimed your reward of ${currentReward} coins!`);
break;
}
currentLevel++; // Move to the next level
}
// Return the final reward (could be 0 if they lost)
return currentReward;
}
// Example usage of the function
const baseReward = 100; // Starting reward is 100 coins
const maxLevels = 5; // Let's say the maximum ladder level is 5
// Start the game
const finalReward = dailyBonusLadder(baseReward, maxLevels);
console.log(`Final reward after playing: ${finalReward} coins.`);
```

Let’s break down the code to develop **Daily Bonus Ladder** feature step by step in simple terms. This explanation will help you understand how the code works without diving too deep into technical jargon.

**1. getWinningProbability(level)**

```
function getWinningProbability(level) {
return Math.max(90 - (level * 10), 10); // Ensure it doesn't go below 10%
}
```

**What This Does:**

**Purpose**: This function calculates the**chance of winning**at each level of the ladder.**Explanation**:- The function starts with a
**90% chance**of winning on the first level. - For each higher level, it reduces the chance by
**10%**. - For example, at level 1, it’s 90%, at level 2, it’s 80%, and so on.
- The function makes sure the probability never goes below
**10%**(even at the highest levels) by using Math.max(), which ensures a minimum value of 10.

- The function starts with a

**Example:**

- At
**level 1**, the chance is 90%. - At
**level 2**, the chance is 80%. - At
**level 3**, the chance is 70%. - If you reach a high level like
**level 9**, the chance would only be 10%.

**2. dailyBonusLadder(baseReward, maxLevels)**

This is the main function that runs the **Daily Bonus Ladder** game.

```
function dailyBonusLadder(baseReward, maxLevels) {
let currentReward = baseReward; // Start with the base reward
let currentLevel = 1; // Start at the first level
```

**What This Does:**

**Purpose**: This function simulates the entire ladder game, where users can claim or gamble their reward.**Explanation**:- baseReward: The starting reward, such as
**100 coins**. - maxLevels: The maximum number of levels the user can climb, for example,
**5 levels**. - currentReward: This variable stores the user’s current reward, which starts with the baseReward.
- currentLevel: Tracks the level the user is on, starting from
**level 1**.

- baseReward: The starting reward, such as

**3. Calculating the Chance to Win**

```
while (currentLevel <= maxLevels) {
const chanceToWin = getWinningProbability(currentLevel); // Get current winning chance
console.log(`Level ${currentLevel}: ${chanceToWin}% chance to win. Current reward: ${currentReward} coins.`);
```

**What This Does:**

**Purpose**: This part checks the user’s chance of winning at each level.**Explanation**:- The code runs a
**loop**that continues while the user is climbing levels. - At each level, it calls the getWinningProbability function to determine the
**chance of winning**. - The console.log() line just prints the current level, chance, and reward for debugging purposes.

- The code runs a

**4. Random Chance Calculation**

```
const randomOutcome = Math.random() * 100;
if (randomOutcome <= chanceToWin) {
currentReward *= 2;
console.log(`You won! Your reward is now ${currentReward} coins.`);
} else {
console.log('You lost! You forfeit your reward for today.');
currentReward = 0;
break;
}
```

**What This Does:**

**Purpose**: This is where the actual**gamble**happens.**Explanation**:- Math.random() generates a random number between 0 and 100.
- If the random number is
**less than or equal to**the chance of winning (chanceToWin), the user**wins**, and their reward is doubled. - If the random number is
**greater**, the user**loses**and forfeits the reward for the day. The currentReward is set to**0**, and the game ends with the break statement.

**Example:**

- If the user is at
**level 1**with a**90% chance**of winning, and the random number is**65**, they win and double their reward. - If the random number is
**95**, they lose and get nothing for that day.

**5. Asking the User to Continue or Stop**

```
const continuePlaying = confirm('Do you want to risk and go to the next level?');
if (!continuePlaying) {
console.log(`You claimed your reward of ${currentReward} coins!`);
break;
}
currentLevel++; // Move to the next level
}
```

**What This Does:**

**Purpose**: This part lets the user decide if they want to**continue**gambling or**claim**their reward.**Explanation**:- confirm() shows a pop-up message asking the user if they want to
**continue**or**claim**their reward. - If the user
**chooses to stop**, the game ends, and they**claim**their current reward. - If the user
**chooses to continue**, they move to the**next level**(the code increases currentLevel by 1), and the game continues

- confirm() shows a pop-up message asking the user if they want to

**6. Returning the Final Reward**

```
return currentReward;
```

**What This Does:**

**Purpose**: After the game ends (either by winning, losing, or claiming), this part returns the**final reward**.**Explanation**: Whether the user lost all their coins or stopped at some point to claim their reward, this line sends back the final result of the game.

**7. Example Usage**

```
const baseReward = 100; // Starting reward is 100 coins
const maxLevels = 5; // Let's say the maximum ladder level is 5
const finalReward = dailyBonusLadder(baseReward, maxLevels);
console.log(`Final reward after playing: ${finalReward} coins.`);
```

**What This Does:**

**Purpose**: This is an example of how the function can be used on a website.**Explanation**:- We set the
**base reward**to 100 coins and the**maximum levels**to 5. - Then we run the dailyBonusLadder() function to simulate the game.
- The final reward (whether 0 or higher) is printed to the console with console.log().

- We set the

**Summary of How the Code Works:**

**Starts with a base reward**, such as 100 coins.- At each level, the user has a
**decreasing chance**to win and double their reward. - If they win, they can choose to
**continue**or**claim**their reward. - If they lose, they lose everything for that day.
- The code ensures that the risk increases the further they go up the ladder, making it a
**fun and strategic game**.

**Conclusion**

With this code, we’ve created a fun, simple game that adds excitement and risk to your users’ experience on the website. Each level makes it harder to win, but the reward doubles, making users weigh their choices carefully. If they stop at the right time, they walk away with a nice bonus. If they get too greedy, they might lose everything!