Я использую Nodejs с Socket.io, чтобы сделать пошаговую игру.Проходя повороты с socket.io и Nodejs в пошаговой игре
Каждый поворот должен заканчиваться при нажатии кнопки «Pass» или через 5 секунд после начала поворота. В любом случае, сначала необходимо инициировать событие «Pass».
Мой текущий счетчик просто продолжает цикл, даже если его текущий игрок не поворачивается, и в определенных условиях он заканчивает поворот преждевременно.
У меня возникают проблемы с тем, какую логику я должен использовать, чтобы мои повороты работали правильно.
Мой клиент сторона этой функции
//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');
}
}
});