У меня получается приложение мозайка, но вот что-то алгоритм плохо работает. Выдаёт сообщение о складывании картинки даже тогда, когда картинка не сложена
Вот код складывания и проверку на полное совпадение:
void PB_Click(object sender, EventArgs e)
{
PictureBox pb = (PictureBox)sender;
for (int i = 0; i < PB.Length; i++)
{
// Сначала определим пустое место на области рисования картинки.
if (PB[i].Visible == false)
{
// Затем проверим кликнутый прямоугольник и
// если у него совпадают координаты по X или Y,
// (откидываем из вычисления прямоугольники расположеннные по диагонали)
// но при этом он на ближайшем расстоянии от пустого
// прямоугольника
// (откидываем прямоугольники расположенные через прямоугольник от пустого)
if ((pb.Location.X == PB[i].Location.X && Math.Abs(pb.Location.Y - PB[i].Location.Y) == PB[i].Height) || (pb.Location.Y == PB[i].Location.Y &&
Math.Abs(pb.Location.X - PB[i].Location.X) == PB[i].Width))
{
// После успешной проверки
// меняем местами пустой и кликнутый прямоугольники.
Point pt = PB[i].Location;
PB[i].Location = pb.Location;
pb.Location = pt;
// После каждого хода проверка на полную сборку картинки.
//*************** блок проверки ***********************
// Если хоть у одного прямоугольника не совпадают
// реальные координаты и первичные выходим из функции.
for (int j = 0; j < PB.Length; j++)
{
Point point = (Point)PB[i].Tag;
if (PB[j].Location != point)
{
//MessageBox.Show(this, point + "x" + PB[j].Location.ToString(), "Data");
Debug.WriteLine(point + "x" + PB[j].Location.ToString());
return;
}
}
// Если у всех прямоугольников совпали реальные и первичные
// координаты - картинка собрана!
for (int m = 0; m < PB.Length; m++)
{
PB[m].Visible = true;
PB[m].BorderStyle = BorderStyle.None; // убираем обрамление прямоугольников
Properties.Settings.Default.LevelCompleted = true;
MessageBox.Show(this, "Картинка собрана!", "Победа", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
//************** окончание блока проверки *************
}
break;
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Создал сочетание клавиш Ctrl+O и Ctrl+АПри нажатии все работает, как я хотел, но проигрывается стандартный звук «Восклицание»
Использую ListView для отображения логовИногда в логе бывают ссылки (напимер, "Некорректная ссылка: http://example
Имеется такая функция, которая вызывает сама себя, то есть рекурсивнаяДопустим n = 5