Я постараюсь сохранить это как можно более конкретным.Для каждого контура управления, затрагивающего только один элемент управления
Это мой код:
foreach (Control c in this.Controls)
{
if (c.Height > 25)
{
c.BackColor = Color.Red;
pictureBox1.Location = new Point(x1, y1);
if (pictureBox1.Bounds.IntersectsWith(c.Bounds))
{
isCollide = true;
label1.Text = "true";
c.BackColor = Color.Green;
}
else
{
isCollide = false;
label1.Text = "false";
}
}
}
Моя цель состоит в том, чтобы перебрать все элементы управления на моей форме, и обнаружить все из которых имеют более чем 25 пикселей в высоту, которая определяет, являются ли они стена в моей игре.
Переменная «isCollide», которая имеет значение «true», просто делает ее так, что я не могу ее пропустить.
Проблема в том, что она затрагивает только 1 коробку изображений (стену). Тем не менее, я решил изменить цвет всех выбранных элементов управления на зеленый, чтобы проверить, какие элементы управления подвержены воздействию цикла, и все же это влияет на все стены, как это должно быть.
Мой вопрос:, почему цвет влияет на все элементы управления, через которые прошел мой код, но обнаружение конфликтов не работает на всех них? Это потому, что переменная isCollide установлена одновременно на «ложь» и «истина» из-за столкновения с одной стеной и одновременно не сталкивается с другим?
Как я могу исправить эту проблему?
Это код, который использует «isCollide»:
public void move(string Direction)
{
if (Direction == "Up")
{
//b = x/a = y
reset();
x1 = x;
y1 = y - 5;
isCollided();
if (isCollide == false)
{
y -= 5;
}
}
* Примечание: Не конец кода, аналогичный код был применен ко всем направлениям (сверху, слева, справа, снизу)
Покажите мне код, который использует isCollide, и на нем основана логика. В этом коде вы устанавливаете isCollide. Я хочу посмотреть, как вы используете isCollide –
Edit *: выглядит грязно. Я буду обновлять исходный пост. – user3126288
этот код является синтаксически неправильным для начала. isCollide - это поле не метод, поэтому вы не можете его вызывать с помощью '()', как будто у вас есть Collided() –