Я пытался создать простой мультиплеер с 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, но не могу найти ответ.
Извините за мой английский язык, спасибо.