Financial Confidence Simulator
Answer a few questions to calculate your probability of reaching financial independence.
Monte Carlo Simulation
<!-- WHY NOT QUEST GAME --> <div id="game" style="position:relative;width:100%;height:400px;overflow:hidden;background:linear-gradient(to top, #004cb3, #8ED6FF);font-family:sans-serif;"> <div id="player" style="position:absolute;bottom:10px;left:50px;width:40px;height:40px;background:gold;border-radius:50%;"></div> <div id="obstacle" style="position:absolute;bottom:10px;right:-50px;width:30px;height:50px;background:red;"></div> <div id="key" style="position:absolute;bottom:150px;right:-200px;width:20px;height:20px;background:limegreen;border-radius:50%;"></div> <div id="score" style="position:absolute;top:10px;left:10px;color:white;font-size:20px;">Keys: 0</div> <div id="message" style="position:absolute;top:40px;left:10px;color:white;font-size:16px;"></div> </div> <script> // Variables const player = document.getElementById('player'); const obstacle = document.getElementById('obstacle'); const key = document.getElementById('key'); const scoreDisplay = document.getElementById('score'); const messageDisplay = document.getElementById('message'); let isJumping = false; let score = 0; let quotes = [ "Believe in your next step!", "Limits are illusions!", "Your breakthrough is near!", "One mile or a million, you move forward!", "Why not now? Why not you?" ]; // Jump on click document.getElementById('game').addEventListener('click', function() { if (!isJumping) { isJumping = true; player.style.transition = 'bottom 0.4s'; player.style.bottom = '120px'; setTimeout(() => { player.style.bottom = '10px'; setTimeout(() => { isJumping = false; }, 400); }, 400); } }); // Move elements function moveElement(elem, speed, resetX) { let pos = parseInt(window.getComputedStyle(elem).right); if (pos > window.innerWidth + 100) { elem.style.right = resetX + 'px'; if (elem === key) { elem.style.bottom = (Math.random() * 200 + 80) + 'px'; } } else { elem.style.right = (pos + speed) + 'px'; } } // Check collision function checkCollision(a, b) { const aRect = a.getBoundingClientRect(); const bRect = b.getBoundingClientRect(); return !(aRect.top > bRect.bottom || aRect.bottom < bRect.top || aRect.right < bRect.left || aRect.left > bRect.right); } // Reset game function resetGame() { score = 0; scoreDisplay.textContent = 'Keys: 0'; messageDisplay.textContent = "You are strong! Try again."; obstacle.style.right = '-50px'; key.style.right = '-200px'; } // Game loop function gameLoop() { moveElement(obstacle, 5, -50); moveElement(key, 4, -200); if (checkCollision(player, obstacle)) { resetGame(); } if (checkCollision(player, key)) { score++; scoreDisplay.textContent = 'Keys: ' + score; key.style.right = '-200px'; key.style.bottom = (Math.random() * 200 + 80) + 'px'; if (score % 3 === 0) { const quote = quotes[Math.floor(Math.random() * quotes.length)]; messageDisplay.textContent = quote; } } requestAnimationFrame(gameLoop); } // Start game gameLoop(); </script>