【发布时间】:2018-05-04 08:12:54
【问题描述】:
我正在尝试使用 JavaScript 创建一个数字猜谜游戏来进行代码挑战,我对这种语言非常陌生,需要一些帮助。
游戏的前提是让计算机猜测用户的数字在0到100之间是多少。参数是使用if-else语句和while循环中的confirm函数。有人建议使用将通过循环移动的二进制搜索(不使用和数组);通过询问用户他们的数字是高于、低于还是等于计算机当前的猜测来缩小计算机的猜测范围。
如下所示,如果用户确认该语句为真,我可以启动 if 语句并给出结果。但现在我被困在如何继续使用 else if 语句,继续循环,并成功实现二进制搜索。我已经开始了 else if 语句,但我知道这很可能不是要走的路。我试图通过堆栈溢出和其他网站搜索如何使用二进制搜索,但是所有结果都通过我无法做到的数组使用它返回。任何帮助和建议将不胜感激。
var guessNumGame = function () {
'use strict';
var low = 0;
var high = 100;
var number;
alert("Think of a number betwwen 0 and 100");
while (low <= high) {
number = Math.round((low + high) / 2);
if (window.confirm("Is your number " + number + " ? Click OK for
Yes, CANCEL for No.") == true ) {
alert("You got it! Thanks for playing!");
} //this is where I'm stuck on how to proceed and below is unfinished
else if (window.confirm("Is your number higher or lower? Click OK
for higher, CANCEL for lower. ") < true) {
window.confirm("Is your number " + number / 2 + " ? Click OK
for Yes, CANCEL for No.") == true;
}else {
return guess;
}
return; // this return is here just to avoid and infinite loop
}
};
window.onload = guessNumGame;
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Pick a Number</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<h1>Pick a number for me to guess</h1>
<script src="js/pick_number.js"></script>
</body>
</html>
【问题讨论】: