我正在尝试构建单人游戏(点击),您可以将手机用作控制设备。我为用户创建了登录名,他/她可以在键盘和单元控制之间进行选择。
用户点击“小区”后,他会重定向到游戏页面。在页面上,他获取一个随机呈现的URL以输入单元格URL,以连接两个设备。
所以我最终得到了5个文件:
game_mob.jade(以下是用户在登录后登陆并且此网址已经过网站的地方):
h3#mobileUrlStart www.apopkalypse.com/mob/#{randomUrl}
game_mob_ctrl.jade(游戏的实际控件,这是针对手机屏幕呈现的):
.controls
button#goUp Up
button#goDown Down
button#goLeft Left
button#goRight Right
script_mobile.js(浏览器屏幕的客户端js):
var currentUrl = $('#mobileUrlStart').text();
var roomName = currentUrl.substr(currentUrl.length - 5);
var socket = io.connect('/game_play');
if(roomName){
socket.emit('join_room', roomName );
}
var move = false;
socket.on('goUp', function() {
move = setInterval(function() {
$('.animate-box').animate({
top: "-=30px"
}, 'fast');
}, 250);
});
script_mob_ctrl.js(用于单元格控件的客户端js):
// Get the room Name via URL
var currentUrl = window.location.pathname;
var roomName = currentUrl.substr(currentUrl.length - 5);
var socket = io.connect('/game_play');
socket.on('established', function() {
log('★ Connection established.');
});
if(roomName){
socket.emit('join_room', roomName );
}
$('#goUp').mousedown(function(e) {
socket.emit('goUp', '');
});
socket.js中的服务器端脚本:
var io = require('socket.io');
exports.initialize = function(server){
io = io.listen(server);
var gamePlay = io.of("/game_play").on('connection', function(socket) {
socket.on("join_room", function(room){
socket.join(room);
});
io.socket.in(room).emit('goUp', function(data, ack) {
io.sockets.emit('goUp');
});
});
};
一切正常,直到我开始玩“房间”。但我需要为每个玩家提供一个单独的房间。任何想法,我该如何改进?或者我的错误在哪里?