所以我正在开发一个简单的游戏。逻辑流程是当两个玩家连接到房间时,游戏将初始化并发出3秒倒计时事件并伴随一个按钮。如果一个玩家点击该按钮,则该玩家将发出使他/她成为游戏主持人的事件。这个“if else”声明在我的socket.io/Node.js环境中不起作用
该按钮将显示3秒钟。如果没有被点击消失,服务器将随机选择主机。
无论按钮是否被点击,3秒钟后所有的客户端都会发出“就绪”事件。
这是我的代码。
如果单击该按钮,“主机”活动将通过客户端发出的,和我的服务器端代码
client.on('host',function(){
var player = room.getPlayer(client.id);
player.isHost=true;
});
然后这里是“准备”事件的服务器端。
client.on("ready", function() {
var player = room.getPlayer(client.id);
var table = room.getTable(player.tableID);
if (2>1) {
for (var i = 0; i < table.players.length; i++) {
if (table.players[i].isHost===true){
console.log("you are the host")
} else {
console.log("we are going to randomly pick a host")
}
}
}
})
现在,如果没有玩家点击按钮的终端会显示
我们将随机挑选一台主机
我们将随机挑选一台主机
我们要随机挑选主机
我们要随机挑选主机
否则它会像
我们将随机挑选一台主机
你是主机
我们将随机挑选一台主机
你是主机
在这个阶段,只有2个客户被允许进行游戏,所以players.length是2.看起来if/else将与players.length同时执行?
难道这可能是因为您正在比较布尔值与'==='比较值和类型吗? – user82395214
'if/else'会运行'table.players.length'次 - 在你的情况下似乎是'4' –
我看不到你需要运行一个循环,每个玩家都会得到它自己的“你是主机“消息 –