我正在使用NodeJs和Socket.io來製作基於回合的遊戲。在turn-based遊戲中通過socket.io和Nodejs輪流
無論何時按下「Pass」按鈕或轉動開始後5秒過去,每一轉都必須結束。無論首先發生什麼,都必須觸發「通行證」事件。
即使當前玩家不是當前玩家,我的當前計數器仍會繼續循環,並且在某些情況下它會過早地結束回合。
我在使用什麼邏輯來讓我的回合正常工作時遇到問題。
我的客戶端有這個功能
//Pressing "Pass" button
$('#pass_turn').on('click', function(){
socket.emit('pass_turn');
$('#your_turn').hide();
$('#not_turn').show();
});
//This runs everytime the server tells the player its their turn
socket.on('your_turn', function() {
$('#your_turn').show();
$('#not_turn').hide();
var counter = 0;
var interval = setInterval(function() {
counter++;
if (counter == 5) {
console.log('pass_turn');
clearInterval(interval);
$('#pass_turn').trigger("click");
}
}, 1000);
});
這是我的服務器端代碼:
socket.on('pass_turn', function() {
var room = socket.rooms;
for(var item in socket.rooms){
if(item.substring(0, 7) == 'room_0.'){
//if conditions met, emit turn to opponent
socket.broadcast.to(item).emit('your_turn');
}
}
});