Я запускаю программу, которая ищет пиксель. но если пиксель не находится в диапазоне Search1, то он должен искать в диапазоне search2. Но он игнорирует мой else if. если мой пиксель не находится в Search1, то моя программа ничего не делает и ждет, пока он снова не окажется в диапазоне от Search1.
Что я сделал не так? я подумал, что правильно разместить Else if на этом пути :/
void SEARCHING()
{
while (true)
{
if (GetKeyState(Keys.X) == 1)
{
try
{
object search1 = au3.PixelSearch(768, 432, 1200, 675, 0xDD2C02, 5);
object search2 = au3.PixelSearch(600, 337, 1319, 864, 0xDD2C02, 5);
object search3 = au3.PixelSearch(400, 225, 1519, 900, 0xDD2C02, 5);
object search4 = au3.PixelSearch(200, 70, 1519, 900, 0xDD2C02, 5);
if (search1.ToString() != "1")
{
object[] search1Coord = (object[])search1;
au3.MouseClick("LEFT", (int)search1Coord[0] + 50, (int)search1Coord[1] , 1, 1);
}
else if (search2.ToString() != "1")
{
object[] search2Coord = (object[])search2;
au3.MouseClick("LEFT", (int)search2Coord[0] + 50, (int)search2Coord[1] , 1, 1);
}
else if (search3.ToString() != "1")
{
object[] search3Coord = (object[])search3;
au3.MouseClick("LEFT", (int)search3Coord[0] + 50, (int)search3Coord[1] , 1, 1);
}
else if (search4.ToString() != "1")
{
object[] search4Coord = (object[])search4;
au3.MouseClick("LEFT", (int)search4Coord[0] + 50, (int)search4Coord[1] , 1, 1);
}
}
catch { }
}
}
}
Сейчас самое время пройтись по коду с отладчиком, чтобы более подробно понаблюдать за его поведением. Это не «игнорирование» какого-либо кода, это выполнение кода построчно. Это такжеполное игнорирование всех исключений, что является очень плохой идеей. Когда вы проходите в отладчике, что конкретно происходит. Какая операция дает неожиданный результат? Какие значения использовались в то время? Каков был результат? Какой результат ожидался? Почему?
Если search1 завершится неудачно, вы получите сообщение об ошибке. Из-за try/catch вы сразу же прыгнете, чтобы поймать. Вам нужно использовать try/catch при каждом поиске.
спасибо приятель, который помогает мне. теперь работает отлично :)
Если вы используете AutoItx, похоже, что в методах PixelSearch есть ошибка. Взгляните на этот ответ, он может вам помочь
Вы отладили его, чтобы увидеть, что именно возвращает
au3.PixelSearch()
?