PHP游戏中isBetween函数误用当前随机数而非历史数的问题
解决点击Deal按钮后使用新随机数而非历史值的问题
问题根源
你的代码逻辑顺序错误:点击按钮时先执行了随机数生成操作,覆盖了原有的历史值,之后才调用isBetween函数,导致判断用的是新生成的数值,而非点击前显示的历史值。
解决方案1:调整执行顺序,先保存历史值再处理
先将点击瞬间的随机数保存到临时变量,用这些变量完成判断输出,最后再生成新的随机数。示例代码如下:
// 全局变量存储当前显示的随机数 let num1, num2, num3; // 生成随机数并更新页面显示 function generateRandom() { num1 = Math.floor(Math.random() * 100); num2 = Math.floor(Math.random() * 100); num3 = Math.floor(Math.random() * 100); // 更新页面元素显示 document.getElementById('num1').textContent = num1; document.getElementById('num2').textContent = num2; document.getElementById('num3').textContent = num3; } // 区间判断函数 function isBetween(a, b, c) { const min = Math.min(a, c); const max = Math.max(a, c); return b > min && b < max; } // 绑定Deal按钮点击事件 document.getElementById('dealBtn').addEventListener('click', () => { // 1. 保存点击瞬间的历史随机数 const currentNum1 = num1; const currentNum2 = num2; const currentNum3 = num3; // 2. 执行区间判断并输出结果 const result = isBetween(currentNum1, currentNum2, currentNum3); console.log(`判断结果:${result}`); document.getElementById('result').textContent = `判断结果:${result}`; // 3. 最后生成新的随机数 generateRandom(); }); // 页面初始化时生成第一组随机数 generateRandom();
解决方案2:模块化管理随机数(更优雅)
将随机数的生成和存储封装得更清晰,避免全局变量被意外覆盖:
// 生成随机数并返回,同时更新页面显示 function generateRandom() { const nums = [ Math.floor(Math.random() * 100), Math.floor(Math.random() * 100), Math.floor(Math.random() * 100) ]; // 更新页面显示 document.getElementById('num1').textContent = nums[0]; document.getElementById('num2').textContent = nums[1]; document.getElementById('num3').textContent = nums[2]; return nums; } // 区间判断函数 function isBetween(a, b, c) { const min = Math.min(a, c); const max = Math.max(a, c); return b > min && b < max; } // 初始化时保存第一组随机数 let currentNums = generateRandom(); // 绑定按钮点击事件 document.getElementById('dealBtn').addEventListener('click', () => { // 使用当前保存的历史数值执行判断 const result = isBetween(...currentNums); console.log(`判断结果:${result}`); document.getElementById('result').textContent = `判断结果:${result}`; // 生成新随机数并更新存储 currentNums = generateRandom(); });
这两种方案都能确保isBetween函数使用的是点击按钮前显示的历史随机数,完成判断后再生成新的随机数。
内容的提问来源于stack exchange,提问作者husseyy
相关产品推荐
相关产品推荐

