Socket.IO与单人游戏与智能手机作为控制设备

时间:2014-04-18 12:48:47

标签: node.js sockets websocket socket.io

我正在尝试构建单人游戏(点击),您可以将手机用作控制设备。我为用户创建了登录名,他/她可以在键盘和单元控制之间进行选择。

用户点击“小区”后,他会重定向到游戏页面。在页面上,他获取一个随机呈现的URL以输入单元格URL,以连接两个设备。

所以我最终得到了5个文件:

  1. game_mob.jade(以下是用户在登录后登陆并且此网址已经过网站的地方):

     h3#mobileUrlStart www.apopkalypse.com/mob/#{randomUrl}
    
  2. game_mob_ctrl.jade(游戏的实际控件,这是针对手机屏幕呈现的):

     .controls
       button#goUp Up
       button#goDown Down
       button#goLeft Left
       button#goRight Right
    
  3. 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);
    });
    
  4. 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', '');
    });
    
  5. 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');
        }); 
      });
    };
    
  6. 一切正常,直到我开始玩“房间”。但我需要为每个玩家提供一个单独的房间。任何想法,我该如何改进?或者我的错误在哪里?

0 个答案:

没有答案