}
else if (i <3 && j <9)
{
field [i, j].Square = 3;
}
else if (i <6 && j <3)
{
field [i, j].Square = 4;
}
else if (i <6 && j <6)
{
field [i, j].Square = 5;
}
else if (i <6 && j <9)
{
field [i, j].Square = 6;
}
else if (i <9 && j <3)
{
field [i, j].Square = 7;
}
else if (i <9 && j <6)
{
field [i, j].Square = 8;
}
else if (i <9 && j <9)
{
field [i, j].Square = 9;
}
}
}
// Чтение сохраненных данных
ReadData ();
// Поиск повторов
SearchRepeats ();
}
// Генерация поля
public void Generate ()
{
for (short i = 0; i <9; i++)
{
for (short j = 0; j <9; j++)
{
field [i, j].Standard = false;
field [i, j].Repeat = false;
}
}
time = 0;
Random rand = new Random ();
numbers = new short [9] {1, 2, 3, 4, 5, 6, 7, 8, 9};
// Рандомное формирование первой стороки
for (short i = 0; i <9; i++)
{
short tempRand = (short)(rand.Next (45689) % (9 – i));
field [0, i].Value = numbers [tempRand];
for (short j = tempRand; j <9 – i – 1; j++)
{
numbers [j] = numbers [j +1];
}
}
// Формирование строк согласно перестановкам
numbers = new short [9] {8, 3, 4, 6, 7, 0, 5, 1, 2};
// Формирование второй строки
for (short i = 0; i <9; i++)
{
field [1, numbers[i]].Value = field [0, i].Value;
}
numbers = new short [9] {5, 6, 8, 2, 0, 7, 1, 3, 4};
// Формирование третьей строки
for (short i = 0; i <9; i++)
{
field [2, numbers[i]].Value = field [0, i].Value;
}
numbers = new short [9] {2, 8, 6, 4, 3, 1, 7, 0, 5};
// Формирование четвертой строки
for (short i = 0; i <9; i++)
{
field [3, numbers[i]].Value = field [0, i].Value;
}
numbers = new short [9] {7, 5, 3, 1, 2, 6, 4, 8, 0};
// Формирование пятой строки
for (short i = 0; i <9; i++)
{
field [4, numbers[i]].Value = field [0, i].Value;
}
numbers = new short [9] {4, 2, 1, 7, 8, 3, 0, 5, 6};
// Формирование шестой строки
for (short i = 0; i <9; i++)
{
field [5, numbers[i]].Value = field [0, i].Value;
}
numbers = new short [9] {6, 0, 5, 8, 1, 4, 3, 2, 7};
// Формирование седьмой строки
for (short i = 0; i <9; i++)
{
field [6, numbers[i]].Value = field [0, i].Value;
}
numbers = new short [9] {3, 4, 7, 0, 5, 8, 2, 6, 1};
// Формирование восьмой строки
for (short i = 0; i <9; i++)
{
field [7, numbers[i]].Value = field [0, i].Value;
}
numbers = new short [9] {1, 7, 0, 5, 6, 2, 8, 4, 3};
// Формирование девятой строки
for (short i = 0; i <9; i++)
{
field [8, numbers[i]].Value = field [0, i].Value;
}
// Переменивание строк/столбцов/регионов
MixHorizontalLines ();
MixVerticalLines ();
MixHorizontalRegions ();
MixVerticalRegions ();
// Освобождение клеток на поле
DeleteNumbersFromField ();
}
// Перестановка строк/столбцов в каждом регионе (блок из трех строк/столбцов)
public void MixHorizontalLines ()
{
Random rand = new Random ();
short line1, line2;
//Переставляем две строки в первой тройке
line1 = (short)(rand.Next (12432) % 3);
line2 = (short)(rand.Next (87457) % 3);
ExchangeValuesOfHorizontalLines (line1, line2);
//Переставляем две строки во второй тройке
line1 = (short)(rand.Next (12432) % 3 +3);
line2