Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.33 KB | None | 0 0
  1.     private int[] FindLine(int cellNum)
  2.     {
  3.         int row, col;
  4.         // Находим ряд и столбец клетки
  5.         row = cellNum / N;
  6.         col = cellNum - N * row;
  7.        
  8.         int[] line = new int[N];
  9.        
  10.         // Проверка диагоналей
  11.         bool diag = false;
  12.         // Диагональ 00 - 11
  13.         if (row == col)
  14.         {
  15.             diag = true;
  16.             for (int i = 0; i < N; i++)
  17.             {
  18.                 if (_cells[0].State != _cells[N * i + i].State)
  19.                 {
  20.                     diag = false;  
  21.                 }
  22.             }
  23.             if (diag)
  24.             {
  25.                 for (int i = 0; i < N; i++)
  26.                 {
  27.                     line[i] = N * i + i;
  28.                 }
  29.  
  30.                 return line;
  31.             }
  32.         }
  33.         // Диагональ 10 - 01
  34.         if (row + col == N - 1)
  35.         {
  36.             diag = true;
  37.             for (int i = 0; i < N; i++)
  38.             {
  39.                 if (_cells[N-1].State != _cells[N-1+(N-1)*i].State)
  40.                 {
  41.                     diag = false;  
  42.                 }
  43.             }
  44.             if (diag)
  45.             {
  46.                 for (int i = 0; i < N; i++)
  47.                 {
  48.                     line[i] = N-1+2*i;
  49.                 }
  50.  
  51.                 return line;
  52.             }
  53.         }
  54.        
  55.         // Проверка горизонтальной линии
  56.         bool hline = true;
  57.         for (int i = 0; i < N; i++)
  58.         {
  59.             if (_cells[N * row].State != _cells[N * row + i].State)
  60.             {
  61.                 hline = false;  
  62.             }
  63.         }
  64.         if (hline)
  65.         {
  66.             for (int i = 0; i < N; i++)
  67.             {
  68.                 line[i] = N * row + i;
  69.             }
  70.  
  71.             return line;
  72.         }
  73.        
  74.         // Проверка вертикальной линии
  75.         bool vline = true;
  76.         for (int i = 0; i < N; i++)
  77.         {
  78.             if (_cells[col].State != _cells[col+i*N].State)
  79.             {
  80.                 vline = false;  
  81.             }
  82.         }
  83.         if (vline)
  84.         {
  85.             for (int i = 0; i < N; i++)
  86.             {
  87.                 line[i] = col+i*N;
  88.             }
  89.  
  90.             return line;
  91.         }
  92.        
  93.         return null;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement