2014-01-05 4 views
-3

C#에서는 플레이어가 얻었거나 잃어 버렸거나 넥타이 였는지 여부를 확인할 수있는 방법이있는 tic tac toe 게임이 있습니다. 넥타이인지 확인하는 코드에 문제가 있습니다. 그래서 지금 나는 이것을 가지고있다. 그리고 요소 중 하나에 공간이 있다면 게임은 무승부가 아니며 계속 진행됩니다. 코드를 실행할 때 게임이 아직 끝나지 않은 경우에도 무작위로 넥타이를 말할 것입니다.Tic Tac Toe 배열

 bool draw = true; 
     for (int row = 0; row < matrix.GetLength(0); row++) 
     { 
      for (int col = 0; col < matrix.GetLength(1); col++) 
      { 
       if (matrix[row, col] == ' ') 
       { 
        bool draw = false; 
       } 
      } 
     } 
     if (draw) 
     { 
      return 'D'; //return D for draw 
     } 
+1

코드를 이해할 수 있도록 전체 솔루션을 게시하면 게시 한 내용에서 추측하기 어렵습니다. – realnero

+1

아주 쉽게 디버깅 할 수 있어야합니다. 돌아 오는 'D'에 휴식을 취하고 매트릭스에 맞을 때 값을 확인하십시오. 그게 잘못된 일이 무엇인지 알려줄거야. – Chris

답변

1

변수 그리기는 설정하지 않고 내부 범위에 새 변수를 선언합니다.

0

@RandRandom은 선언 된 draw 변수를 변경하는 대신 내부 루프에 새 변수를 선언하는 것과 같은 문제가 하나 있습니다. 코드에 대한 또 다른 성능 포인트는 성능이 좋으면 조건이 true가 될 때 break을 사용하는 것이 좋습니다. 한 가지 다른 점은 잘못 입력 한 오류를 방지하기 위해 이러한 상황에서 string 또는 char을 반환하는 대신 Enums을 사용하는 것이 더 좋습니다.

 enum DrawResult 
     { 
      Draw, 
      NotDraw 
     } 

     bool draw = true; 
     for (int row = 0; row < matrix.GetLength(0); row++) 
     { 
      for (int col = 0; col < matrix.GetLength(1); col++) 
      { 
       if (char.IsWhiteSpace(matrix[row, col])) 
       { 
        draw = false; 
        break; 
       } 
      } 
     } 
     if (draw) 
     { 
      return DrawResult.Draw; //return D for draw 
     } 
     return DrawResult.NotDraw