大家。我正在用Javascript做一点实验。我想做一个猜谜游戏,用户猜测0-100的数字,计算机告诉他/她“太低”,“太高”或“正确”。但是,我希望被操纵。也就是说,计算机应该选择可能的最长路径以便用户获得正确的答案。例如:
现在,我只是随机说“太低”或“太高”这是有问题的。例如:
我该如何避免这种情况?计算机应该延长游戏时间但不是不合逻辑的。
我的想法:
minValue
和maxValue
变量,用于跟踪猜测的当前界限。不幸的是,我不确定如何很好地实现这一点。这些想法基本相同。但是,我坚持实施它们。提前谢谢。
我想了解如何在Javascript中实现这些想法的一些步骤(或代码)。
Jsfiddle(虽然它可能没有多大帮助,但它很少):http://jsfiddle.net/prankol57/f4JWw/
答案 0 :(得分:2)
是的,只需使用两个边界变量。
maxNum = 100
minNum = 0
示例:用户猜测51
结果:计算机表示该数字小于51,并设置maxNum = 50
if(guess> maxNum)
太高了
否则if(guess< minNum)
太低了
否则if(guess>((maxNum + minNum)/ 2)) 计算机会说实际数字低于猜测
否则if(guess<((maxNum + minNum)/ 2)) 计算机会说实际数字高于猜测
//只有在数字正好是平均值(maxNum,minNum)时才会发生
否则
我想只是默认计算机说实际数字高于猜测。无论哪种方式都没关系
无论如何,我认为有一些伪代码可以回答你的问题。总的来说,我真的建议在这样的问题上撞到墙上。理解实现背后的逻辑是擅长做什么的唯一方法。
答案 1 :(得分:1)
使用@indiscrete伪代码创建。 :)
var min = 0;
var max = 100;
$("#guessForm").submit(function (e) {
var guess = parseInt($("#guess").val()) || 0;
var hint = checkGuess(guess);
$("<p>").addClass("guessRecord").html(hint).appendTo("#guessRecords");
$("#guess").val("");
e.preventDefault();
});
function checkGuess(guess) {
var mid = max - (Math.abs(max - min) / 2);
if (guess > mid) {
if (guess <= max) max = guess;
return "My number is less than " + guess + ".";
} else if (guess < mid) {
if (guess >= min) min = guess;
return "My number is greater than " + guess + ".";
} else {
return "Correct";
}
}