我尝试使用HTML5 Canvas,JavaScript(太使用John Resig简单继承库)和带有Socket.IO的Node.js创建简单的多人游戏。我的客户代码:
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',
DOWN ='DOWN',
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('disconnect',function(){
console.log('Disconnected!');
});
var Player = Class.extend({
初始化:函数(x,y){
this.x = x;
this.y = y;
},
setX:function(x){
this.x = x;
},
getX:function(){
返回this.x;
},
setY:函数(y){
this.y = y;
},
getY:function(){
返回this.y;
},
画: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(){
这.y--;
},
moveLEFT:function(){
this.x--;
},
moveDOWN:function(){
this.y ++;
},
moveRIGHT:function(){
this.x ++;
}
});
函数checkKeyCode(event){
var keyCode;
if(event == null){
keyCode = window.event.keyCode;
}其他{
keyCode = event.keyCode;
}
开关(keyCode){
案例38://向上
player.moveUP();
socket.send(UP);
打破;
案例37://向左
player.moveLEFT();
socket.send(LEFT);
打破;
案例40:// DOWN
player.moveDOWN();
socket.send(DOWN);
打破;
案例39://正确
player.moveRIGHT();
socket.send(RIGHT);
打破;
默认:
打破;
}
}
函数update(){
player.draw();
}
var FPS = 30;
setInterval(function(){
update();
player.draw();
},1000 / FPS);
函数init(){
document.onkeydown = checkKeyCode;
}
在里面();
和服务器代码:
var http = require('http'),
io = require('socket.io'),
buffer = new Array(),
服务器= http.createServer(function(req,res){
res.writeHead(200,{'Content-Type':'text / html'});
重发('你好,世界
');
});
server.listen(8080);
var socket = io.listen(server);
socket.on('connection',function(client){
client.on('message',function(message){
console.log(消息);
client.broadcast(消息);
})
client.on('disconnect',function(){
})
});
当我运行两个客户端时,第一个客户端可以移动第二个客户端Rect,第二个客户端可以移动第一个客户端rect,第三个客户端可以移动第一个和第二个客户端rect。
我有疑问如何创建真正的多层播放器?像这样:打开三个客户端,第一个客户端获取rect1,第二个rect2和最后一个rect3。第一个客户端只能移动rect1,第三个客户端只能移动rect3。
也许有人有主意?我在Google中搜索,但找不到答案。
抱歉,我的英语不好,谢谢。