Я пытался создать простой мультиплеер с HTML5 Canvas, JavaScript (тоже с помощью простой библиотеки John Resig Inheritance) и Node.js с Socket.IO. Мой код клиента:
var canvas = document.getElementById ('game'); var context = canvas.getContext ('2d'); var socket = new io.Socket ('127.0.0.1', {port: 8080}); var player = null; var UP = 'UP', LEFT = 'LEFT', ВНИЗ = 'ВНИЗ', RIGHT = 'RIGHT'; Socket.connect (); socket.on ('connect', function () {socket.send (); console.log ( 'Connected!'); игрок = новый игрок (50, 50); }); socket.on ('message', function (msg) { if (msg == 'UP') { player.moveUP (); } else if (msg == 'LEFT') { player.moveLEFT (); } else if (msg == 'DOWN') { player.moveDOWN (); } else if (msg == 'RIGHT') { player.moveRIGHT (); } еще { } }); socket.on ('отключить', 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 () { вернуть this.x; }, setY: function (y) { this.y = y; }, getY: function () { вернуть 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 ++; } }); function checkKeyCode (event) { var keyCode; if (event == null) { keyCode = window.event.keyCode; } еще { keyCode = event.keyCode; } switch (keyCode) { дело 38: // UP player.moveUP (); socket.send (УП); перемена; дело 37: // ВЛЕВО player.moveLEFT (); socket.send (слева); перемена; дело 40: // ВНИЗ player.moveDOWN (); socket.send (ВНИЗ); перемена; дело 39: // ПРАВО player.moveRIGHT (); socket.send (справа); перемена; дефолт: перемена; } } функция update () { player.draw (); } var FPS = 30; setInterval (function () { Обновить(); player.draw (); }, 1000 / FPS); функция init () { document.onkeydown = checkKeyCode; } в этом();
И код сервера:
var http = require ('http'), io = require ('socket.io'), buffer = new Array (), server = http.createServer (function (req, res) { res.writeHead (200, {'Content-Type': 'text / html'}); Отправить('Привет, мир
«); }); server.listen (8080); var socket = io.listen (сервер); socket.on ('соединение', функция (клиент) { client.on ('message', function (message) { console.log (сообщение); client.broadcast (сообщение); }) client.on ('отключить', функция () { }) });
И когда я запускаю два клиента, я с первым клиентом могу переместить второй клиент Rect, а со вторым клиентом переместить первый клиент прямоугольник, и что-то подобное с третьим клиентом может переместить первый и второй клиент прямоугольник.
У меня есть вопрос, как создать настоящий Multi-Player? что-то вроде: Откройте три клиента, и первый клиент получит rect1, второй rect2 и последний rect3. Первый клиент может перемещать только rect1, третий клиент может перемещать только rect3.
Может у кого есть идеи? Я ищу в Google, но не могу найти ответ.
Извините за мой английский язык, спасибо.