Sto provando a creare un semplice multigiocatore con HTML5 Canvas, JavaScript (usando anche la semplice libreria di ereditarietà di John Resig) e Node.js con Socket.IO. Il mio codice cliente:
var canvas = document.getElementById ('game'); var context = canvas.getContext ('2d'); var socket = new io.Socket ('127.0.0.1', {porta: 8080}); var player = null; var UP = 'UP', SINISTRA = "SINISTRA", GIÙ = "GIÙ", DESTRA = 'DESTRA'; Socket.connect (); socket.on ('connect', function () {socket.send (); console.log ( 'Connected!'); giocatore = nuovo giocatore (50, 50); }); socket.on ('message', function (msg) { if (msg == 'UP') { player.moveUP (); } else if (msg == 'SINISTRA') { player.moveLEFT (); } altrimenti if (msg == 'DOWN') { player.moveDOWN (); } altrimenti if (msg == 'DESTRA') { player.moveRIGHT (); } altro { } }); socket.on ('disconnect', function () { console.log ( 'Disconnected!'); }); var Player = Class.extend ({ init: function (x, y) { this.x = x; this.y = y; }, setX: function (x) { this.x = x; }, getX: function () { restituisce this.x; }, setY: function (y) { this.y = y; }, getY: function () { restituire this.y; }, draw: function () { context.clearRect (0, 0, 350, 150); context.fillRect (this.x, this.y, 15, 15); }, move: function () { this.x + = 1; this.y + = 1; }, moveUP: function () { this.y--; }, moveLEFT: function () { this.x--; }, moveDOWN: function () { this.y ++; }, moveRIGHT: function () { this.x ++; } }); funzione checkKeyCode (evento) { var keyCode; if (evento == null) { keyCode = window.event.keyCode; } altro { keyCode = event.keyCode; } switch (keyCode) { caso 38: // SU player.moveUP (); socket.send (UP); rompere; caso 37: // SINISTRA player.moveLEFT (); socket.send (LEFT); rompere; caso 40: // GIÙ player.moveDOWN (); socket.send (DOWN); rompere; caso 39: // DESTRA player.moveRIGHT (); socket.send (RIGHT); rompere; predefinito: rompere; } } aggiornamento funzioni () { player.draw (); } var FPS = 30; setInterval (function () { aggiornare(); player.draw (); }, 1000 / FPS); funzione init () { document.onkeydown = checkKeyCode; } dentro();
E codice server:
var http = request ('http'), io = require ('socket.io'), buffer = new Array (), server = http.createServer (funzione (req, res) { res.writeHead (200, {'Content-Type': 'text / html'}); res.end ('Ciao mondo
'); }); server.listen (8080); var socket = io.listen (server); socket.on ('connection', function (client) { client.on ('message', function (message) { console.log (messaggio); client.broadcast (messaggio); }) client.on ('disconnect', function () { }) });
E quando eseguo due client, io con il primo client posso spostare il secondo client Rect e con il secondo client spostare il primo client rect e qualcosa come con il terzo client può spostare il primo e il secondo client rect.
Ho una domanda su come creare un vero multigiocatore? qualcosa come: Apri tre client e il primo client ottiene rect1, il secondo rect2 e l'ultimo rect3. Solo il primo client può spostare rect1, il terzo client può spostare solo rect3.
Forse qualcuno ne ha idea? Cerco su Google ma non trovo la risposta.
Ci scusiamo per la mia lingua inglese, grazie.