通过一个函数传递函数属性?使用Javascript

时间:2016-07-04 02:57:10

标签: javascript jquery

我正试图找出确定游戏结束的最佳方式。

我有我的gameover()函数

    function gameover(chk, scoreOne, scoreTwo) {
        if (chk === true) {
            // Game is over
            // Show scoreOne
            // Show scoreTwo
        }
    }

这将需要3个变量。

        } else if(validCurrQuestion.length == 2){
            // Clears validCurrQuestion so that it can run to the next question
            validCurrQuestion.splice(0,validCurrQuestion.length);
            validQuestions.shift();
            if (validQuestions.length > 0) {
              dataRequest();  
            } else {
                checker = true;
            }

        }

        socket.on("player one", function(data) {
            console.log(data.pScore + "THIS IS WORKING");
            score = data.pScore;
            console.log("THIS IS PLAYER TWO" + data.pNameTwo);
            io.sockets.emit("player ones score", {p1Score: score});
        });

        socket.on("player two", function(data) {
            console.log(data.pScore + "THIS IS WORKING");
            score = data.pScore;
            io.sockets.emit("player twos score", {p2Score: score});
        }); 

这三个值是checker,scoreP1和scoreP2。有没有办法让每个值都通过游戏功能?

1 个答案:

答案 0 :(得分:2)

好吧,好几件事。

我认为直接的答案就是拥有一个变量来保存与你的" checker"相同范围的玩家的分数。变量

var checker = false, 
     scores={
        p1:0,
        p2:0
    };

然后,当您从套接字回调中收到更新时,您将修改此变量

scores.p1 = data.pScore;

所以当你打电话给gameover时,它看起来像这样:

gameover(checked, scores.p1, scores.p2);

---直接答案结束---

其他观察和建议

我不确定为什么你需要你的gameover函数中的chk参数,因为你应该直接调用gameover(并删除游戏内的if语句)。我可以看到在哪里知道"如果游戏结束了"知道其他用途可能有用。你可以重命名检查到" isGameover"然后在gameover函数中将该变量设置为true。我不确定的另一件事是确保两位玩家同时进行游戏。您可能需要有一个套接字回调处理程序并发出以与游戏结束的每个客户端进行通信,以确保游戏以相同的方式结束两个玩家。