如何将每个玩家的最新得分显示给每个玩家与游戏相关的UI?

时间:2018-03-07 13:36:54

标签: javascript node.js mongodb socket.io

我正在开发一个实时多人游戏测验游戏,其中游戏室中连接的玩家数量限制为2,这意味着每个玩家只有一个对手。我正在尝试同时显示玩家和# 39;每次他们点击一个问题的选项时,两个玩家都得分;像这样:得分1:20得分2:10类似于Quizup游戏,但我无法显示对手的得分。 我已经使用了nodejs,socket.io用于服务器端,javascript用于前端。我已经尝试每次都将分数发送到服务器,服务器将分数存储在mongodb服务器中,但我无法获取相应的分数每个球员。

game.html和main.js(客户端):



function answer(ans) {
  var z = document.getElementById('option' + ans);
  var choice = z.innerHTML;
  var a = new Date().getTime();
  var diff1 = sTime - a;
  var seconds1 = 0 - Math.floor(diff1 / 1000);
  console.log(seconds1);
  Disable_Buttons();
  var l = 10 - seconds1;
  if (choice == questions[x].answer) {
    scores += l;
  } else {
    scores = scores;
  }
    socket.emit('score',{
            scores:scores,
            id:socket.id
        });
     socket.on('leaderboard',(data)=>{
    document.getElementById('scores').innerHTML = 'SCORE1: '+data.points;
    document.getElementById('all_scores').innerHTML = 'SCORE2: '+ data.points;
}); 
   

<div class="buttons">
  <button id="button0" onclick="answer('0')" style="display:none"><span id="option0"></span></button> <br>
  <button id="button1" onclick="answer('1')" style="display:none"><span id="option1"></span></button> <br>
  <button id="button2" onclick="answer('2')" style="display:none"><span id="option2"></span></button> <br>
  <button id="button3" onclick="answer('3')" style="display:none"><span id="option3"></span></button> <br>
</div>

<hr style="margin-top: 50px">
<footer>
  <h2 id="message"></h2>

  <h3 id='scores'></h3>
  <h3 id='all_scores'></h3>
&#13;
&#13;
&#13;

server.js

  socket.on('score',(data)=>{
    db.collection('Scores').insertOne({
        id:data.id,
        score:data.scores
    },(err,result)=>{
        if(err){
           return console.log('unable to insert',err);
        }
        console.log(JSON.stringify(result.ops,undefined,2));
    });

    socket.to(room_id).emit('leaderboard',{
        points: db.collection("Scores").findOne({id:data.id},{id:0,_id:0})
    });



});

0 个答案:

没有答案