Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 试图改善忍者,牛仔,熊游戏的逻辑,但得到意想不到的标识符_Javascript - Fatal编程技术网

Javascript 试图改善忍者,牛仔,熊游戏的逻辑,但得到意想不到的标识符

Javascript 试图改善忍者,牛仔,熊游戏的逻辑,但得到意想不到的标识符,javascript,Javascript,当我运行这个程序时,我在Chrome中获得了意外的标识符(还没有尝试其他的)。它与生成计算机的选择有关,我猜的是我试图创建的变量。有没有关于如何解决这个问题的建议?还是以更好的方式解决逻辑问题?我希望逻辑是: 第一次投掷:更可能是牛仔(中间道路-类似于纸张) 根据用户选择进行以下抛出。最初,我计划对用户以前的一组选择进行检查,但我远远没有能力编写此代码。因此,我选择只在最后一次投掷的基础上进行 下面是代码中不起作用的部分(希望粘贴整个内容,但格式设置令人头痛,而且很长)var previou

当我运行这个程序时,我在Chrome中获得了
意外的标识符
(还没有尝试其他的)。它与生成计算机的选择有关,我猜的是我试图创建的变量。有没有关于如何解决这个问题的建议?还是以更好的方式解决逻辑问题?我希望逻辑是:

  • 第一次投掷:更可能是牛仔(中间道路-类似于纸张)
  • 根据用户选择进行以下抛出。最初,我计划对用户以前的一组选择进行检查,但我远远没有能力编写此代码。因此,我选择只在最后一次投掷的基础上进行
下面是代码中不起作用的部分(希望粘贴整个内容,但格式设置令人头痛,而且很长)<代码>var previoususerChoices在脚本开头创建

    var newComputerChoice = function () {
    if (previoususerChoices < array.length) {
        computerChoice = Math.random();
        //Change randomly generated number to ninja, cowboy, bear
        if (computerChoice < .25) {
            computerChoice = "ninja";
        } else if (computerChoice < .75) {
            computerChoice = "cowboy";
        } else {
            computerChoice = "bear";
        };
    } else {
        var previoususerChoice = previoususerChoices.slice(Math.max(arr.length -1,0));
        console.log(prevoususerChoice);
        if previoususerChoice === "ninja" {
            computerChoice = Math.random();
            if (computerChoice < .50) {
                computerChoice = "cowboy";
            } else if (computerChoice < .75) {
                computerChoice = "bear";
            } else {
                computerChoice = "ninja";
            }
        } else if previoususerChoice === "bear" {               
                if (computerChoice < .50) {
                    computerChoice = "ninja";
                } else if (computerChoice < .75) {
                    computerChoice = "cowboy";
                } else {
                    computerChoice = "bear";
                }
        } else {
                if (computerChoice < .50) {
                    computerChoice = "bear";
                } else if (computerChoice < .75) {
                    computerChoice = "cowboy";
                } else {
                    computerChoice = "ninja";              
                }
            }           
        }
    }   
    console.log('pc choice: ', computerChoice);
    }
当我试图将用户的选择放入数组(之前创建的数组)时,控制台告诉我,
previoususerChoices.push
不是一个函数。我想这是真的,但我不知道有什么其他方法可以将值推入数组,所以我猜真正的罪魁祸首是其他东西


Fiddle:

提示:Chrome控制台中错误消息行的右端有一个链接。该链接包括发生错误的行号。如果没有帮助,单击链接,Chrome会显示准确的错误行。或者更好的是,使用Firefox(带Firebug)来调试代码,它有更容易理解的错误消息。但是,我知道在将用户的选择推入数组时会出现一个新错误:previoususerChoices.push(userChoice);。根据控制台,.push不是一个函数(我想是真的),但它应该可以工作。到底
previoususerChoices
应该做什么?这一行肯定不能像你想的那样工作。应该检查数组是否包含一个数字。因为我创建了一个空数组,所以第一次传递应该返回true,并运行条件语句。在接下来的过程中,它应该跳过这一步。最后,我选择了退出阵列解决方案。现在,我只是使用一个变量检查最后一个用户选择。它解决了问题,但使我无法添加更高级的逻辑。
previoususerChoices.push(userChoice);