C# Else If 被忽略
C# Else If is ignored
i 运行 正在寻找像素的程序。
但是如果像素不在 Search1 的范围内,那么它应该在 search2 范围内搜索。
但它忽略了我的 else if。如果我的像素不在 Search1 中,那么我的程序什么都不做,等待它再次进入 Search1 范围内。
我做错了什么?
我认为以这种方式放置 Else 是正确的:/
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 方法中似乎存在错误。
看看这个答案,可能对你有帮助
PixelSearch in certain area of monitor
i 运行 正在寻找像素的程序。 但是如果像素不在 Search1 的范围内,那么它应该在 search2 范围内搜索。 但它忽略了我的 else if。如果我的像素不在 Search1 中,那么我的程序什么都不做,等待它再次进入 Search1 范围内。
我做错了什么? 我认为以这种方式放置 Else 是正确的:/
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 方法中似乎存在错误。 看看这个答案,可能对你有帮助
PixelSearch in certain area of monitor