Вопрос по лабиринту C# windows form?

Мне надо сделать лабиринт. Как сделать чтобы при касании PictureBox или другого элемента не он либо не проходил или выдавало сообщение?
Пытался через Location но не получилось.

Для начала собери ссылки на все эти элементы в список или массив, чтобы можно было перебрать их все в цикле. Прежде чем перемещать PictureBox, получай Rectangle с его координатами и размером:

Rectangle rect = pictureBox.Bounds;

И сперва перемещай его, вместо PictureBox:

rect.Location = new_location;

Затем проверяй, пересекается ли этот Rectangle в новой позиции с каким-либо элементом из списка:

bool collision = false;
foreach (Control element in element_list) {
collision = rect.IntersectsWith(element.Bounds);
if (collision) break;
}

И потом, в зависимости от результата, либо перемещай в эту позицию PictureBox, либо отменяй перемещение:

if ( ! Collision) pictureBox.Location = rect.Location;

Добавить комментарий