Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// <summary>
- /// Ищет линию, закрашенную тремя одинаковыми символами
- /// </summary>
- /// <param name="cellNum">Клетка, состоящая в искомой линии</param>
- /// <returns>Массив номеров клеток найденой линии или null</returns>
- private int[] FindLine(int cellNum)
- {
- int row, col;
- // Находим ряд и столбец клетки
- row = cellNum / N;
- col = cellNum - N * row;
- int[] line = new int[N];
- // Проверка диагоналей
- bool diag = false;
- // Диагональ 00 - 11
- if (row == col)
- {
- diag = true;
- for (int i = 0; i < N; i++)
- {
- if (_cells[0].State != _cells[N * i + i].State)
- {
- diag = false;
- }
- }
- if (diag)
- {
- for (int i = 0; i < N; i++)
- {
- line[i] = N * i + i;
- }
- return line;
- }
- }
- // Диагональ 10 - 01
- if (row + col == N - 1)
- {
- diag = true;
- for (int i = 0; i < N; i++)
- {
- if (_cells[N-1].State != _cells[N*(N-1)-i*(N-1)].State)
- {
- diag = false;
- }
- }
- if (diag)
- {
- for (int i = 0; i < N; i++)
- {
- line[i] = N*(N-1)-i*(N-1);
- }
- return line;
- }
- }
- // Проверка горизонтальной линии
- bool hline = true;
- for (int i = 0; i < N; i++)
- {
- if (_cells[N * row].State != _cells[N * row + i].State)
- {
- hline = false;
- }
- }
- if (hline)
- {
- for (int i = 0; i < N; i++)
- {
- line[i] = N * row + i;
- }
- return line;
- }
- // Проверка вертикальной линии
- bool vline = true;
- for (int i = 0; i < N; i++)
- {
- if (_cells[col].State != _cells[col+i*N].State)
- {
- vline = false;
- }
- }
- if (vline)
- {
- for (int i = 0; i < N; i++)
- {
- line[i] = col+i*N;
- }
- return line;
- }
- return null;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement