猜一个数字(操纵) - Javascript

时间:2014-06-14 23:16:28

标签: javascript jquery

大家。我正在用Javascript做一点实验。我想做一个猜谜游戏,用户猜测0-100的数字,计算机告诉他/她“太低”,“太高”或“正确”。但是,我希望被操纵。也就是说,计算机应该选择可能的最长路径以便用户获得正确的答案。例如:

  1. 我猜10.由于大约有九十个数字超过10,但只有10个数字少于10,计算机会说“我的数字不止于此”(为了延长游戏时间)。
  2. 我猜80.计算机应该说“我的号码不到那个。”
  3. 所以,直到只有一种可能性,计算机被迫说我得到了正确答案。
  4. 现在,我只是随机说“太低”或“太高”这是有问题的。例如:

    1. 我说50.电脑说“我的号码不止于此”
    2. 我说25(尽管我知道这个数字超过了50)。计算机上写着“我的号码少于那个”,暗示它是作弊。
    3. 我该如何避免这种情况?计算机应该延长游戏时间但不是不合逻辑的。

      我的想法:

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

      这些想法基本相同。但是,我坚持实施它们。提前谢谢。

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

      Jsfiddle(虽然它可能没有多大帮助,但它很少):http://jsfiddle.net/prankol57/f4JWw/

2 个答案:

答案 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伪代码创建。 :)

JSFiddle Example Here

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