Как проверить соприкасаются ли два изображения или нет winforms c#?
Здравствуйте, делаю змейку и столкнулся с двумя проблемами:
1)Как проверить столкнулась ли змея с едой (ну, вы поняли)
2)Как передвинуть в рандомное место еду ?
Заранее благодарю :0)
Обычно поле для змейки представляют в виде двумерного массива, где каждая ячейка находится в одном из трёх состояний - пустота, часть змейки или яблоко. Собственно вы двигаете змейку каждый раз на клетку вперёд, вот и проверяйте, состояние ячейки, в которой должна оказаться голова змейки. Если там яблоко, увеличивайте длину на 1, если змейка, заканчивайте игру.
Чтобы положить яблоко в случайное место - генерируйте случайные координаты x и y, не выходящие за границы двумерного массива. Если по данным координатам располагается часть змейки, генерируйте новые. Так до тех пор, пока не будет выбрана ячейка, в которой находится пустота. Затем меняйте состояние этой ячейки с пустоты на яблоко.
Игнат Соколов, Вам не нужно проверять, соприкасаются ли изображения. Создайте двумерный массив и проверяйте столкновения, как я вам описал. А winforms используйте только для отрисовки этого самого массива
Игнат Соколов, Только вам не нужно получать координаты и размеры прямоугольников. Посмотрите, как другие делают змейку на двумерных массивах. Я уверен, на том же c# полно таких проектов
Василий Дёмин, я попробовал но у меня не получилось с двумерным массивом
У меня расширение 1000 на 800 х и у
Как заполнить массив нак чтоб можно потом проверить, локации их одинаковые или нет?
Игнат Соколов, Самое простое - делаете enum с тремя возможными значениями: empty, snake и apple. Создаёте двумерный массив с начальным значением Empty. Потом в случайное место помещаете значение snake, это и будет голова змеи. Потом выбираете начальное направление и двигаете голову в этом направлении. Если вправо, то x += 1, влево - x -= 1, вверх - y -= 1, вниз - y += 1. Если змея имеет размер в несколько сегментов, то нужно после сдвига головы на её место поместить предыдущий сегмент, на его место пред предыдущий сегмент и так далее. Если в клетке, в которой голова будет после перемещения вдоль направления, находится значение apple, после перемещения всех частей змейки, нужно на предыдущем месте последнего сегмента змеи создать новый сегмент. Если же там будет значение snake, заканчиваете игру.