2014-01-05 5 views
-3

В C# у меня есть игра с tic tac toe, в которой у меня есть способ проверить результат, если игрок выиграл, проиграл, или это был ничья. У меня проблема с проверкой кода, если это галстук. Так что прямо сейчас у меня это есть. И я хочу, чтобы это было, если в любом из элементов есть место, игра не является ничейкой и продолжается. Когда я запускаю код, он случайным образом говорит о своей связи, даже когда игра еще не закончена.Tic Tac Toe array

 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

Вы не устанавливаете переменную draw, а объявляете новую переменную во внутренней области.

0

Одна из проблем с вашим кодом заключается в том, что @RandRandom сказал, что вы объявляете новую переменную во внутреннем цикле вместо изменения объявленной переменной draw. Еще одна точка производительности вашего кода - вам лучше использовать break, когда ваше состояние станет истинным, чтобы иметь лучшую производительность. Еще один момент заключается в том, что вам лучше использовать Enums вместо того, чтобы возвращать string или char в таких ситуациях, чтобы предотвратить ошибки ошибок.

 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