2017-12-23 11 views
1

4 개의 방이 있고 각 방에 게임을하는 여러 명의 클라이언트가있는 멀티 플레이어 게임을하고 있습니다. 게임을 마친 후 모든 사용자의 점수를 서버에 보내 배열에 저장하고 비교 한 다음 승자의 이름을 반환하려고합니다. 그래서, 게임을 마친 후, 방에서 모든 사용자의 점수를 얻으려면 어떻게해야합니까?게임 완료 후 방에서 모든 사용자의 점수를 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)의 데이터를 보낼 수 있습니다,하지만 어떻게에서 모든 클라이언트의 점수를 얻을 수 있습니다 방.

+0

내가 추측하고있어 수'hit'의 점수는? –

+0

예, 성공한 점수는 –

+0

입니다. 점수를 서버로 다시 보내거나 점수를 보내어 데이터베이스에 저장할 수있는 끝점을 만들 수 있습니다. –

답변

0

우선 무엇보다도 사용자를 식별해야합니다. 키 userName 및 값 점수를 사용하여 사용자라는 객체에 저장해 봅시다. 다음과 같이하십시오 : var users = { user1: 12, user2: 9 };.
이 데이터를 서버에 보내야 만합니다. 우리는 당신이 분석 할 데이터와 game finished 이벤트를 수신 할 수있는 서버 측에서 공식 socket.io documentation

<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> 

에서 examle처럼 그것을 할 수 있습니다.

또한,이 점수 데이터를 처리하는 ajax으로 서버에 요청을 할 수 있습니다, 당신이 jQuery를 implementation에 대해 읽거나 native JS

+0

감사합니다. @Grynets. 데이터 파싱의 포인트를 얻었습니다. 하지만 조금 혼란스러워. 즉, 방에는 네 가지 용도가 있습니다. 그런 다음 모든 사용자의 점수가 제출된다는 사실을 어떻게 확인할 수 있습니까? 모든 사용자의 점수 만 저장 한 후에 비교하여 모든 사용자에게 보낼 수 있기 때문입니다. 미안 해요, 바보 같은 질문이라면, 저는 초보자이기 때문입니다. –

+1

@DharaVihol 제 견해로, 게임 사용자는 다음과 같이 보입니다. 1. 사용자가 게임을합니다. 사용자가 방문한 서버에 이벤트를 보내고 ID를 식별 할 수있는 ID를 제공합니다 (또는 이름 지정). 모든 사용자가 게임 룸을 완수하기보다 게임을하고 게임이 끝나면 서버에 이벤트를 내 보냅니다. 여기서 배열에 데이터를 저장합니다. 그냥 이것처럼 [[room1 : [점수]]]'. 배열 길이가 4인지 확인하십시오. 그렇다면 결과를 비교하고 '방출'결과를 사용자에게 표시 할 수 있습니다. 그렇지 않으면 배열이 채워지고 이벤트가 발생할 때까지 기다릴 수 있습니다. – Grynets