2016-07-04 1 views
0

나는 게임이 끝났음을 확인하기위한 최선의 방법을 찾고있다.한 기능을 통해 기능 속성을 전달 하시겠습니까? Javascript

나는 나의 gameover 3 개 변수를해야 할 것입니다

function gameover(chk, scoreOne, scoreTwo) { 
     if (chk === true) { 
      // Game is over 
      // Show scoreOne 
      // Show scoreTwo 
     } 
    } 

() 함수가 있습니다.

 } else if(validCurrQuestion.length == 2){ 
      // Clears validCurrQuestion so that it can run to the next question 
      validCurrQuestion.splice(0,validCurrQuestion.length); 
      validQuestions.shift(); 
      if (validQuestions.length > 0) { 
       dataRequest(); 
      } else { 
       checker = true; 
      } 

     } 

     socket.on("player one", function(data) { 
      console.log(data.pScore + "THIS IS WORKING"); 
      score = data.pScore; 
      console.log("THIS IS PLAYER TWO" + data.pNameTwo); 
      io.sockets.emit("player ones score", {p1Score: score}); 
     }); 

     socket.on("player two", function(data) { 
      console.log(data.pScore + "THIS IS WORKING"); 
      score = data.pScore; 
      io.sockets.emit("player twos score", {p2Score: score}); 
     }); 

이 값은 checker, scoreP1 및 scoreP2입니다. 그 값들 각각을 gameover 함수로 가져 오는 방법이 있습니까?

+0

우리가 도움이되기 전에 예제 코드를 정리해야한다고 생각합니다! – Lifz

+0

게임 상태를 저장하는 개체를 만듭니다. 또한 ... 2 플레이어 게임이라면 소켓이 두 점수를 모두 돌려줘야하는 것 같습니다. – charlietfl

+0

@charlietfl thats 두 점수를 동시에 보내는 방법을 가진 게임을 통해 게임을 만들고 싶었던 이유입니다. 현재 어떤 플레이어와 두 개의 소켓 이벤트가하고있는 것은 다른 플레이어에게 다른 플레이어에게 점수를 보내기 때문입니다. 그래서 쉽게 찾을 수 있도록 한 번에 그들을 표시 할 수 있도록 그들을 한 곳에서 원했습니다. 나는 또한 할 수있는 일은 단순히 양말을 게임에서 점수를 다시내는 것입니다. –

답변

2

좋아, 몇 가지.

직접적인 대답은 "검사기"변수와 동일한 범위에있는 플레이어의 점수를 보유하는 변수를 갖는 것입니다. 당신은 소켓 콜백에서 업데이트를받을 때

var checker = false, 
    scores={ 
     p1:0, 
     p2:0 
    }; 

그런 다음, 당신은 당신이 gameover를 호출 할 때이

scores.p1 = data.pScore; 

변수

그래서, 그것은 다음과 같습니다 수정 :

gameover(checked, scores.p1, scores.p2); 

을 --- 직접 응답 끝 ---

기타 관찰 및 조언

왜 게임 오버 기능을 직접 호출해야하는지 (그리고 게임 오버에서 if 문을 제거해야하기 때문에) 게임 오버 기능에서 chk 매개 변수가 필요한 이유가 확실하지 않습니다. 나는 "게임이 끝났다면"을 아는 것이 다른 용도를 아는 데 유용 할 수 있음을 알 수있었습니다. 체크 된 이름을 "isGameover"로 바꾼 다음 gameover 함수 내에서 해당 변수를 true로 설정할 수 있습니다. 다른 두 가지 점은 두 플레이어가 동시에 게임 오버가 발생하는지 확인하는 것입니다. 소켓 콜백 핸들러가 있어야하며 게임이 끝났음을 각 클라이언트에게 전달하여 게임이 두 플레이어 모두에게 동일한 방식으로 종료되도록해야합니다.

+0

덕분에 그 중 두 가지 기능을 제거하고 내 물건 만 사용할 수있었습니다. 대단히 감사합니다. –

관련 문제