我试图找出最好的方法来确定游戏结束了。
我有我的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。我不确定的另一件事是确保两个玩家同时进行游戏结束。您可能需要有一个套接字回调处理程序,并发出信号以与游戏结束的每个客户端进行通信,以确保游戏对两个玩家的结束方式相同。