如何锁定猜数字游戏的最优上下限?附HTML示例Fiddle
猜数字游戏:锁定最优上下限解决方案
我完全get到你的需求啦——就是要让猜数字游戏里的上下限始终锁定最接近目标值的最优边界:比如目标是50,已经摸到了48(比目标小的最大数),再猜47这种更小的数时,下限绝对不能往下掉;上限也是同理,摸到比目标大的最小数后,再猜更大的数也不会让上限升高,对吧?
核心逻辑调整思路
原来的代码里,只要猜的数比目标小就直接更新下限,比目标大就直接更新上限,这就导致了边界值被“拉远”的问题。我们只需要给上下限的更新加一层判断:
- 下限更新条件:当前猜测数 < 目标值,且这个数比已记录的下限更大(也就是更接近目标)
- 上限更新条件:当前猜测数 > 目标值,且这个数比已记录的上限更小(也就是更接近目标)
修改后的关键代码示例
下面是调整后的核心JavaScript逻辑(对应你游戏里的猜测判断部分):
// 假设初始化的上下限和目标值 let toGuess = 50; let lower = 0; let upper = 100; const feedback = document.getElementById('feedback'); function checkGuess() { const guessInput = document.getElementById('guessInput'); const guess = parseInt(guessInput.value); if (isNaN(guess)) { feedback.textContent = "请输入有效的数字哦!"; return; } if (guess < toGuess) { // 只有当猜测数比当前下限大时,才更新下限 if (guess > lower) { lower = guess; } feedback.textContent = `太小啦!当前最优范围:${lower} - ${upper}`; } else if (guess > toGuess) { // 只有当猜测数比当前上限小时,才更新上限 if (guess < upper) { upper = guess; } feedback.textContent = `太大啦!当前最优范围:${lower} - ${upper}`; } else { feedback.textContent = `恭喜你猜对了!目标数字就是${toGuess}!`; } guessInput.value = ""; }
效果验证
比如目标是50:
- 第一次猜48 → 下限更新为48,提示“太小啦!当前最优范围:48 - 100”
- 再猜47 → 因为47不大于当前下限48,所以下限保持48不变,提示还是“太小啦!当前最优范围:48 - 100”
- 第一次猜52 → 上限更新为52,提示“太大啦!当前最优范围:0 - 52”
- 再猜55 → 因为55不小于当前上限52,所以上限保持52不变,提示还是“太大啦!当前最优范围:0 - 52”
这样就完美实现了锁定最接近目标的最优上下限的需求~
内容的提问来源于stack exchange,提问作者ENzFMa
相关产品推荐
相关产品推荐

