Я намагаюся створити простий мультиплеєр з HTML5 Canvas, JavaScript (теж використовуючи просту бібліотеку наслідування John Resig) та Node.js з Socket.IO. Мій клієнтський код:
var canvas = document.getElementById ('гра'); var контекст = canvas.getContext ('2d'); var socket = новий io.Socket ('127.0.0.1', {порт: 8080}); var player = null; var UP = 'UP', LEFT = 'ВЛІВО', DOWN = 'DOWN', RIGHT = 'ВПРАВО'; socket.connect (); socket.on ('підключити', функцію () {socket.send (); console.log ("Підключено!"); гравець = новий гравець (50, 50); }); socket.on ('повідомлення', функція (msg) { if (msg == 'UP') { player.moveUP (); } else if (msg == 'ВЛИВО') { player.moveLEFT (); } else if (msg == 'DOWN') { player.moveDOWN (); } else if (msg == 'ПРАВА') { player.moveRIGHT (); } else { } }); socket.on ('відключити', функцію () { console.log ('Відключено!'); }); var Player = Class.extend ({ init: функція (x, y) { this.x = x; this.y = y; }, setX: функція (x) { this.x = x; }, getX: function () { повернути це.x; }, setY: функція (y) { this.y = y; }, getY: function () { повернути це.y; }, draw: function () { контекст.clearRect (0, 0, 350, 150); контекст.fillRect (this.x, this.y, 15, 15); }, move: function () { це.x + = 1; this.y + = 1; }, moveUP: function () { this.y--; }, moveLEFT: функція () { this.x--; }, moveDOWN: function () { this.y ++; }, moveRIGHT: function () { this.x ++; } }); функція checkKeyCode (подія) { var keyCode; if (event == null) { keyCode = window.event.keyCode; } else { keyCode = event.keyCode; } перемикач (keyCode) { справа 38: // ВП player.moveUP (); socket.send (UP); перерву; випадок 37: // ЛІВ player.moveLEFT (); socket.send (Вліво); перерву; справа 40: // Вниз player.moveDOWN (); socket.send (Вниз); перерву; випадок 39: // ВПРАВО player.moveRIGHT (); socket.send (ВПРАВО); перерву; за замовчуванням: перерву; } } оновлення функції () { player.draw (); } var FPS = 30; setInterval (функція () { update (); player.draw (); }, 1000 / FPS); функція init () { document.onkeydown = checkKeyCode; } в цьому();
І код сервера:
var http = need ('http'), io = вимагати ('socket.io'), буфер = новий масив (), server = http.createServer (функція (req, res) { res.writeHead (200, {'Content-Type': 'text / html'}); res.end ('Привіт Світ
'); }); server.listen (8080); var socket = io.listen (сервер); socket.on ('з'єднання', функція (клієнт) { client.on ('повідомлення', функція (повідомлення) { console.log (повідомлення); client.broadcast (повідомлення); }) client.on ('відключити', функцію () { }) });
І коли я запускаю два клієнта, я з першим клієнтом можу перемістити Rect другого клієнта, а з другим клієнтом перемістити першу клієнтську пряму, і щось подібне до третього клієнта може перемістити перше і друге клієнтське прямо.
У мене виникає питання, як створити справжній Multi-Player? щось на кшталт: Відкрийте три клієнта та перший клієнт отримує rect1, другий rect2 та останній rect3. Перший клієнт може переміщувати лише rect1, третій клієнт може переміщувати тільки rect3.
Може хтось має ідею? Я шукаю в Google, але не знаходжу відповіді.
Вибачте за мою англійську мову, спасибі