Intento crear un multijugador simple con HTML5 Canvas, JavaScript (también usando la biblioteca de herencia simple John Resig) y Node.js con Socket.IO. Mi código de cliente:
var lienzo = document.getElementById ('juego'); contexto var = canvas.getContext ('2d'); zócalo var = nuevo io.Socket ('127.0.0.1', {puerto: 8080}); jugador var = nulo; var UP = 'UP', IZQUIERDA = 'IZQUIERDA', ABAJO = 'ABAJO', DERECHA = 'DERECHA'; socket.connect (); socket.on ('connect', function () {socket.send (); console.log ('¡Conectado!'); jugador = nuevo jugador (50, 50); }); socket.on ('mensaje', función (msg) { if (msg == 'ARRIBA') { player.moveUP (); } else if (msg == 'IZQUIERDA') { player.moveLEFT (); } else if (msg == 'ABAJO') { player.moveDOWN (); } else if (msg == 'DERECHA') { player.moveRIGHT (); } más { } }); socket.on ('desconectar', función () { console.log ('¡Desconectado!'); }); var Player = Class.extend ({ init: función (x, y) { this.x = x; this.y = y; }, setX: function (x) { this.x = x; }, getX: function () { devuelve this.x; }, setY: función (y) { this.y = y; }, getY: function () { devuelve this.y; }, dibujar: función () { context.clearRect (0, 0, 350, 150); context.fillRect (this.x, this.y, 15, 15); }, mover: función () { this.x + = 1; this.y + = 1; }, moveUP: function () { this.y--; }, moveLEFT: function () { esta X--; }, moveDOWN: function () { this.y ++; }, moveRIGHT: function () { this.x ++; } }); función checkKeyCode (evento) { var keyCode; if (evento == nulo) { keyCode = window.event.keyCode; } más { keyCode = event.keyCode; } interruptor (keyCode) { caso 38: // ARRIBA player.moveUP (); socket.send (ARRIBA); descanso; caso 37: // IZQUIERDA player.moveLEFT (); socket.send (IZQUIERDA); descanso; caso 40: // ABAJO player.moveDOWN (); socket.send (ABAJO); descanso; caso 39: // DERECHO player.moveRIGHT (); socket.send (DERECHA); descanso; defecto: descanso; } } actualización de función () { jugador.draw (); } var FPS = 30; setInterval (function () { actualizar(); jugador.draw (); }, 1000 / FPS); función init () { document.onkeydown = checkKeyCode; } en eso();
Y el código del servidor:
var http = require ('http'), io = require ('socket.io'), buffer = nueva matriz (), server = http.createServer (función (req, res) { res.writeHead (200, {'Content-Type': 'text / html'}); res.end ('Hola Mundo
'); }); server.listen (8080); zócalo var = io.listen (servidor); socket.on ('conexión', función (cliente) { client.on ('mensaje', función (mensaje) { console.log (mensaje); client.broadcast (mensaje); }) client.on ('desconectar', función () { }) });
Y cuando ejecuto dos clientes, con el primer cliente puedo mover el segundo cliente Rect y con el segundo cliente mover el primer cliente rect y algo así como con el tercer cliente puede mover el primer y segundo cliente rect.
Tengo dudas sobre cómo crear un multijugador real. algo como: Abra tres clientes y el primer cliente obtenga rect1, segundo rect2 y último rect3. El primer cliente solo puede mover rect1, el tercero solo puede mover rect3.
Tal vez alguien tiene idea? Busco en Google pero no encuentro la respuesta.
Perdón por mi idioma inglés, gracias.