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, где она проходит через ваш cascasde из условных выражений ИЛИ, к которым подходит один из них. Таким образом, у вас есть 2 проблемы. 1, что oWins() всегда проверяет true через ваши операторы OR и 2, что xWins() вызывается после функции oWins(), которая каждый раз оценивает значение true. Скручивание вместе с такими условными ситуациями является проблематичным и часто трудно отлаживать.

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

 Смежные вопросы

  • Нет связанных вопросов^_^