javascript - Javascript:随机数生成器始终显示相同的数字

标签 javascript

我在Javascript上使用随机数生成器时遇到问题。我正在尝试制作一款小型游戏,可以更快地知道谁获胜,而不必重新掷骰子。您两次掷骰子,然后进行比较,无论谁获胜,都将获胜。

但是,“杀手”总是赢或有平局。幸存者永远都不会赢(也许30分之一?)。这是我的代码:

    <!DOCTYPE html>
<html>
<head>
    <title>DBD Game Random Factor Generator</title>
    <script>

        function CalcChase () {
            killer  =   0   ;
            surv    =   0   ;
            chase   =   0   ;
            killer1 =   Math.floor(Math.random() * 12);
            killer2 =   Math.floor(Math.random() * 12);
            killer3 =   Math.floor(Math.random() * 12);
            killer4 =   Math.floor(Math.random() * 12);
            killer5 =   Math.floor(Math.random() * 12);
            surv1   =   Math.floor(Math.random() * 12);
            surv2   =   Math.floor(Math.random() * 12);
            surv3   =   Math.floor(Math.random() * 12);
            surv4   =   Math.floor(Math.random() * 12);
            surv5   =   Math.floor(Math.random() * 12);
            var res1, res2, res3, res4, res5 ;

            if (killer1 > surv1) {
                res1 = "killer";
                killer++;
            } else if (killer1 = surv1){
                res1 = "draw";
                chase++;
            } else {
                res1 = "survivor";
                surv++;
            }

            if (killer2 > surv2) {
                res2 = "killer";
                killer++;
            } else if (killer2 = surv2){
                res2 = "draw";
                chase++;
            } else {
                res2 = "survivor";
                surv++;
            }

            if (killer3 > surv3) {
                res3 = "killer";
                killer++;
            } else if (killer3 = surv3){
                res3 = "draw";
                chase++;
            } else {
                res3 = "survivor";
                surv++;
            }

            if (killer4 > surv4) {
                res4 = "killer";
                killer++;
            } else if (killer4 = surv4){
                res4 = "draw";
                chase++;
            } else {
                res4 = "survivor";
                surv++;
            }

            if (killer5 > surv5) {
                res5 = "killer";
                killer++;
            } else if (killer5 = surv5){
                res5 = "draw";
                chase++;
            } else {
                res5 = "survivor";
                surv++;
            }

            document.getElementById("chase1").innerHTML =  "<table><tr><td>" + killer1 + "</td><td> - </td><td>" + surv1 + "</td><td>" + res1 + "</td></tr><tr><td> " + killer2 + "</td> <td> - </td> <td>" + surv2 + "</td><td>" + res2 + "</td></tr><tr><td> " + killer3 + "</td> <td> - </td> <td>" + surv3 + "</td><td>" + res3 + "</td></tr><tr><td> " + killer4 + "</td> <td> - </td> <td>" + surv4 + "</td><td>" + res4 + "</td></tr><tr><td> " + killer5 + "</td> <td> - </td> <td>" + surv5 + "</td><td>" + res5 + "</td></tr> </table>" + "<p>" + "killer: " + killer  + "<br>survivor: " + surv  + "<br>chase: " + chase ;

        }
    </script>
</head>
<body>

    <button onclick="CalcChase()">Try it</button>

    <p id="chase1">Results of the game.</p>

</body>
</html>


我试图将杀手的人数减少一些,但以某种方式杀手仍然会获胜,或者有平局。感谢您的阅读和帮助!

最佳答案

您在else if子句中使用赋值运算符而不是比较运算符,例如这里:

} else if (killer1 = surv1){


看起来应该像这样:

} else if (killer1 == surv1){


(请注意,双等号)。在您的代码中,您将用killer1的值覆盖surv1的值,并且只要该值大于零,它将采用else if分支。仅当偶然地surv1的值等于0时,才会采用else分支。

关于javascript - Javascript:随机数生成器始终显示相同的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44012752/

相关文章:

javascript - 不会识别 html 表中的第一个和最后一个值

javascript - 将字符串获取到提交失败的 html5 日期

javascript - PHP - 使用 data-tag 属性的 AJAX 复选框过滤器

javascript - vaadin 是否有一个可用于文本突出显示的 ui 组件?

javascript - HTML5 服务器发送事件 : technical details?

javascript - 该函数是否应该在服务器上异步运行

javascript - 如何在 Angular 4 中使用 ngModel 从表单中获取值

javascript - d3.js 条件词颜色填充wordcloud

javascript - 如何检测变量是否为数组

javascript - 如何删除 summernote 工具提示 v.0.8.2