2016-10-26 6 views
0
var boxId = ['boxMid','boxLeft','boxRight','boxTopMid','boxTopRight','boxTopLeft','boxLow  Mid','boxLowLeft','boxLowRight']; 

    var turn = 0; 

    var pOne = "X"; 
    var pTwo = "O"; 
    var blankBox = ""; 

    var boxMid = document.getElementById('boxMid').innerhtml; 
    var boxLeft = document.getElementById('boxLeft').innerhtml; 
    var boxRight = document.getElementById('boxRight').innerhtml; 
    var boxTopMid = document.getElementById('boxTopMid').innerhtml; 
    var boxTopLeft = document.getElementById('boxTopLeft').innerhtml; 
    var boxTopRight = document.getElementById('boxTopRight').innerhtml; 
    var boxLowMid = document.getElementById('boxLowMid').innerhtml; 
    var boxLowLeft = document.getElementById('boxLowLeft').innerhtml; 
    var boxLowRight = document.getElementById('boxLowRight').innerhtml; 

    var i = 0; 

플레이어 승 기능이 작동하지 않아 여러 다른 사람들이 보았습니다. 그래서 나는 외부 관점을 얻을 것이라고 생각했습니다. 문이 작동하지 않는 경우? 플레이어가 Tic-Tac-Toe를 획득했습니다.

function xWins() { 
     if(boxId[0,1,2] == 'X'|| 
     boxTopLeft == "X" && boxTopMid == "X" && boxTopRight == "X"|| 
     boxLowMid == "X" && boxLowLeft == "X" && boxLowRight == "X"|| 
     boxMid == "X" && boxTopMid == "X" && boxLowMid == "X"|| 
     boxLeft == "X" && boxTopLeft == "X" && boxLowLeft == "X"|| 
     boxRight == "X" && boxTopRight == "X" && boxLowRight == "X"|| 
     boxMid == "X" && boxTopLeft == "X" && boxLowRight == "X"|| 
     boxMid == "X" && boxLowLeft == "X" && boxTopRight == "X") { 
     alert ('Player One Wins!'); 
     turn = 1; 
     } 
    } 
    function oWins(){ 
     if(boxId[0,1,2] == "O"|| 
     boxTopLeft == "O" && boxTopMid == "O" && boxTopRight == "O"|| 
     boxLowMid == "O" && boxLowLeft == "O" && boxLowRight == "O"|| 
     boxMid == "O" && boxTopMid == "O" && boxLowMid == "O"|| 
     boxLeft == "O" && boxTopLeft == "O" && boxLowLeft == "O"|| 
     boxRight == "O" && boxTopRight == "O" && boxLowRight == "O"|| 
     boxMid == "O" && boxTopLeft == "O" && boxLowRight == "O"|| 
     boxMid == "O" && boxLowLeft == "O" && boxTopRight == "O") { 
     alert ('Player Two Wins!'); 
     turn = 0; 
     } 
    } 

    function test(bx){ 
    if(document.getElementById(boxId[bx]).innerHTML == ""){ 
      if (turn<1) { 
       document.getElementById(boxId[bx]).innerHTML = pOne; 
       document.onclick (turn++); 
       oWins(); 
       xWins(); 
      } 

      if (turn == 1) { 
       document.getElementById(boxId[bx]).innerHTML = pTwo; 
       document.onclick (turn--); 
       oWins(); 
       xWins(); 
      } 
     } 
    } 

    function reset() { 
     for(i=0;i<boxId.length;i++) 
     document.getElementsByClassName('boxy')[i].innerHTML = blankBox; 
    } 

는 지금까지 내가 아는 한, 다른 모든 내 점수 판을 제외하고 작동하지만, 내가 거기에 도착할 때 나는 그것을 알아낼 수 있습니다. 본인은 2 개월 미만의 실제 경험 코딩을 가진 고등학생임을 명심하십시오. 그래서 나는 훨씬 쉬울 수있는 몇 가지 일을했을 것입니다.

+0

설정 한 배열을 호출 해 보았습니다. 그 중 하나가 작동하지 않았기 때문에 if 문 중 첫 번째 부분이 나머지 부분과 다릅니다. –

답변

0

버그 원인 : oWins 함수를 호출하여 oWins() 함수를 호출하면 해당 함수 중 하나가 일치하는 OR 조건의 cascasde를 통해 실행됩니다. 그래서 당신에게는 2 가지 문제가 있습니다. 1, oWins()는 항상 OR 문을 통해 true를 테스트하고 2, xWins()는 매번 true로 평가되는 oWins() 함수 다음에 호출됩니다. 이와 같은 문자열 또는 조건문은 문제가 많으며 종종 디버그하기가 어렵습니다.

if (turn == 1) { 
      document.getElementById(boxId[bx]).innerHTML = pTwo; 
      document.onclick (turn--); 
      oWins(); 
      xWins(); 
     }