我试图找出最好的方法来确定游戏结束了。

我有我的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。是否有办法将所有这些值传递给gameover函数?

最佳答案

好了,有几件事。

我认为直接的答案就是拥有一个变量,该变量将玩家的得分保持在与“ checker”变量相同的范围内。

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


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

scores.p1 = data.pScore;


因此,当您调用gameover时,它看起来像这样:

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


---直接回答结束---

其他意见和建议

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

09-12 01:01