简单讲一下思路,顾名思义猜数字游戏,首先利用JS的Math.random()生成一个随机数,下面案例将采用取值范围1-1000的随机数,然后需要玩家在input框输入数字,最后根据输入的数字进行判断就行了,下面上代码:
//html 部分
<div>
玩家输入数字:<input type="text" class="number">
</div>
<button onclick="sure()">确定</button>
<div>
您已猜<span class="res"></span>次
</div>
//script 部分
let playerNum = document.querySelector('.number')
let res = document.querySelector('.res')
// 随机生成1-1000整数
let suiji = Math.floor(Math.random()*1000+1)
// 定义变量接受玩家输入的值
let minNum = null
let maxNum = null
// 记录玩家猜测次数
let i = 0
res.innerHTML = `${i}`
function sure() {
i++
res.innerHTML = `${i}`
if(playerNum.value == suiji)
alert('猜对了!')
else if(playerNum.value > suiji && minNum == null){
alert('0~'+`${playerNum.value}`)
maxNum = playerNum.value
minNum = 0
}else if(playerNum.value < suiji && maxNum == null) {
alert(`${playerNum.value}`+'~1000')
minNum = playerNum.value
maxNum = 1000
}else if(playerNum.value > suiji) {
alert(`${minNum}`+'~'+`${playerNum.value}`)
maxNum = playerNum.value
}else if(playerNum.value < suiji) {
alert(`${playerNum.value}`+'~'+`${maxNum}`)
minNum = playerNum.value
}
}
因为玩家每输入一次,答案的取值范围就会发生变化,所以每次都要去记录当前输入之后的最大值和最小值,以此作为取值范围,此案例写的比较简单,没有做很严格的判断,比如说:已知范围是100-200时,此时输入80,范围就会变为80-200,这个是不严谨的,后期使用的小伙伴可以加一下这个判断。