簡體   English   中英

在socket.io中完成游戲后,從會議室中獲得所有用戶的分數

[英]Get a scores of all users from the room after game completes in socket.io

我正在做一個多人游戲,其中將有四個房間,每個房間將有多個正在玩游戲的客戶。 完成游戲后,我想將所有用戶的分數發送到服務器,將其存儲在數組中,進行比較並返回贏家的名字。 因此,完成游戲后,如何從會議室中獲得所有用戶的分數。

var delayInMilliseconds = 2000;
var hit = 0;

$('#hit').click(function() 
{
  hit++;
});

var modal = document.getElementById('myModal');
var btn = document.getElementsByClassName("common");
var span = document.getElementsByClassName("close")[0];

setTimeout(function() 
{
    var seconds_left = 15;
    var interval = setInterval(function() 
    {
        document.getElementById('timer').innerHTML = --seconds_left;
        if (seconds_left <= 0)
        {
            // document.getElementById('timer').innerHTML = "Time's up!";
            clearInterval(interval);
          console.log(hit);
          $('#hit').attr("disabled", true);
          $('#score').html(hit);
          modal.style.display = "block";

        }
    }, 1000);
}, delayInMilliseconds);

上面是游戲的客戶端代碼,游戲將在15秒后完成,所以我的想法是我可以在if(seconds_left <= 0)發送數據,但是我如何從房間中獲取所有客戶端的分數。

首先,您必須以某種方式識別用戶。 讓我們將它們保存到具有關鍵userName和值得分的名為user的對象中。 就像這樣: var users = { user1: 12, user2: 9 };
比我們必須將此數據發送到服務器。 我們可以像socket.io官方文檔中的示例那樣進行操作

<script>
  var socket = io('http://localhost');
  socket.on('connection', function () {
    console.log('Socket connected');
  });

  // here is your code to handle users actions. 
  // When the game is finished, you do it like this
  socket.emit('game finished', users);
</script>

在服務器端,您可以使用要解析的數據監聽game finished事件。

另外,您可以使用ajax向服務器發出請求以處理分數數據,可以閱讀有關jQuery 實現本機JS的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM