Partage
  • Partager sur Facebook
  • Partager sur Twitter

[NodeJS]données ne s'envoi pas

    24 octobre 2016 à 5:45:56

    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);




    • Partager sur Facebook
    • Partager sur Twitter
      25 octobre 2016 à 1:44:31

      Le soucis vient du tableau apparemment, mais je saurais pas trop comment arranger ça.
      • Partager sur Facebook
      • Partager sur Twitter

      [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.
      • Editeur
      • Markdown