繁体   English   中英

猜数字(操纵)-Javascript

[英]Guess a number (rigged) - Javascript

大家。 我正在用Javascript做一些实验。 我想做一个猜谜游戏,用户猜一个0到100之间的数字,然后计算机告诉他/她“太低”,“太高”或“正确”。 但是,我希望对此进行操纵 也就是说,计算机应选择尽可能长的路径,以使用户正确获得答案。 例如:

  1. 我猜是10。由于大约有90个数字大于10,但只有10个数字小于10,所以计算机会说“我的数字比这个大”(为了延长游戏时间)。
  2. 然后我猜是80。计算机应该说“我的电话少于这个电话。”
  3. 如此下去,直到只剩下一种可能性,并且计算机被迫说我得到了正确的答案。

现在,我只是随机地说“太低”或“太高”,这是有问题的。 例如:

  1. 我说50。计算机上说:“我的号码不止于此”
  2. 我说25(即使我知道这个数字超过50)。 电脑显示“我的电话号码小于该号码”,这表明它在作弊。

如何避免这种情况? 电脑可以延长游戏时间,但不是不合逻辑的。

我的想法:

  • 创建一个minValuemaxValue变量,以跟踪当前的猜测范围。 不幸的是,我不确定如何很好地实现这一点。
  • 创建一个包含计算机可能想到的所有可能值的数组。 每次用户猜测时,请删除不再可能的值。 重复直到数组中只剩下一个元素。

想法基本相同。 但是,我坚持执行它们。 先感谢您。

我想要一些步骤(或代码),以了解如何在Javascript中实现这些想法。

Jsfiddle(尽管可能无济于事,但几乎没有帮助): http : //jsfiddle.net/prankol57/f4JWw/

是的,只需使用两个边界变量。

maxNum = 100
minNum = 0

示例:用户猜测51
结果:计算机说该数字小于51,并设置maxNum = 50

如果(猜测> maxNum)
太高

否则(猜测<minNum)
太低

否则,如果(猜测>((maxNum + minNum)/ 2)),计算机将说出实际数字低于猜测

否则,如果(guess <((maxNum + minNum)/ 2)),计算机将说出实际数字高于猜测值

//仅当数字恰好是均值(maxNum,minNum)时才会发生
其他
我猜只是默认为计算机说的实际数字高于猜测。 这两种方式都不重要

无论如何,我认为有些伪代码可以回答您的问题。 不过总的来说,我真的建议您在这种问题上用头撞墙。 理解实现背后的逻辑是擅长执行工作的唯一方法。

使用@indiscrete伪代码创建。 :)

JSFiddle示例在这里

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";
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM