Bonjour, je développe un mini jeu cependant je rencontre un problème durant le déplacement du personnage celui-ci ne bouge pas alors que les packet sont bien envoyé au serveur, mais celui-ci ne les renvois pas au client.
Voici le morceau de code qui semble poser problème
for(var i in Player.list){
var player = Player.list[i];
player.update();
pack.push({
id:player.id
x:player.x,
y:player.y,
});
}
j'ai tenté un console.log en dehors du for et le console.log m'a bien renvoyé les données au client je ne comprends pas pourquoi mon for cause ce bug, voici le morceau de code complet
var express = require('express');
var app = express();
var serv = require('http').Server(app);
serv.listen(1337);
console.log("Lancement ok");
var SOCKET_LIST = {};
var PLAYER_LIST = {};
var Player = function(id){
var self = {
x:250,
y:250,
id:id,
number:"" + Math.floor(10 * Math.random()),
pressingRight:false,
pressingLeft:false,
pressingUp:false,
pressingDown:false,
maxSpd:10,
map:'dortoire',
}
self.updatePosition = function(){
if(self.pressingRight)
self.x += self.maxSpd;
if(self.pressingLeft)
self.x -= self.maxSpd;
if(self.pressingUp)
self.y -= self.maxSpd;
if(self.pressingDown)
self.y += self.maxSpd;
}
initPack.player.push({
id:self.id,
x:self.x,
y:self.y,
number:self.number,
});
return self;
}
var io = require('socket.io')(serv,{});
Player.list = {};
io.sockets.on('connection', function(socket){
socket.emit('loginok');
socket.id = Math.random();
SOCKET_LIST[socket.id] = socket;
var player = Player(socket.id);
PLAYER_LIST[socket.id] = player;
socket.on('disconnect',function(){
delete SOCKET_LIST[socket.id];
delete PLAYER_LIST[socket.id];
removePack.player.push(player.id);
});
socket.on('keyPress',function(data){
if(data.inputId === 'left')
player.pressingLeft = data.state;
else if(data.inputId === 'right')
player.pressingRight = data.state;
else if(data.inputId === 'up')
player.pressingUp = data.state;
else if(data.inputId === 'down')
player.pressingDown = data.state;
console.log(data.state);
});
});
Player.update = function(){
var pack = [];
for(var i in Player.list){
var player = Player.list[i];
player.update();
pack.push({
id:player.id,
x:player.x,
y:player.y,
});
}
return pack;
}
var initPack = {player:[]};
var removePack = {player:[]};
setInterval(function(){
var pack = {
player:Player.update(),
}
for(var i in SOCKET_LIST){
var socket = SOCKET_LIST[i];
socket.emit('init', initPack);
socket.emit('update',pack);
socket.emit('remove', removePack);
}
initPack.player = [];
removePack.player = [];
},1000/25);
Le soucis vient du tableau apparemment, mais je saurais pas trop comment arranger ça.
[NodeJS]données ne s'envoi pas
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.