2013-06-09 4 views
0

간단한 tic-tac-toe 게임을 만들려고하는데 문제가 생겼습니다. winMonditions라는 2D 배열을 만들어 xMoves 및 oMoves와 비교하여 누군가가 이겼을 때를 결정하지만 내 decideWin 함수를 호출 할 때 아무 것도 일어나지 않는 것 같습니다. 나는 배열과 범위에있어서 나쁘다. 그래서 문제가 틀린 범위 문제에 속한다고 가정하고있다. 그러나 이것은 내 머리 위로 조금있다. 누군가이 코드의 문제점을 파악하는 데 도움을 줄 수 있습니까? http://jsfiddle.net/Skww6/1/ 당신은 배열의 항목을 인용하는 것을 잊었다배열을 비교하여 승리 조건을 결정하십시오.

var determineWin = function (pMoves) { 
    var winAlert; 
    for (var i = 0; i < winConditions.length; i++) { 
     if (winConditions[i].length > pMoves.length) { 
      continue; 
     } 
    for (var j = 0; j < winConditions[i].length; j++) { 
     winAlert = false; 
     for (var k = 0; k < pMoves.length; k++) { 
      if (pMoves[k] === winConditions[i][j]) { 
       winAlert = true; 
       break; 
      } 

     } 
     if (!winAlert) break; 
    } 
     if (winAlert) { 
      alert(currentPlayer + "wins!"); 
      break; 
     } 
    } 
}; 

답변

2

(이것은 내가 아마 내 실수를하는 기능입니다). 당신의 jsFiddle에서

,

변경 :

var winConditions = [[c1, c2, c3], [c4, c5, c6], [c7, c8, c9], [c1,c4, c7], [c2, c5, c8], [c3, c6, c9], [c1, c5, c9], [c3, c5, c7]]; 

사람 :

var winConditions = [['c1', 'c2', 'c3'], ['c4', 'c5', 'c6'], ['c7', 'c8', 'c9'], ['c1','c4', 'c7'], ['c2', 'c5', 'c8'], ['c3', 'c6', 'c9'], ['c1', 'c5', 'c9'], ['c3', 'c5', 'c7']]; 

그리고 위의 코드는 잘 작동합니다.

물론 Live Demo

+0

, 그것은 항상 작은 뭔가. 감사합니다 – user2449973

+0

'라이브 데모'버튼, 멋진 발명품을 훔치도록하겠습니다. –

+1

@RienNeVaPlus - 자유롭게하십시오. 나는 다른 누군가에게서 그것을 훔쳤다! :) –

관련 문제