Я намагаюся створити простий мультиплеєр з 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, але не знаходжу відповіді.
Вибачте за мою англійську мову, спасибі