代码不会无限循环运行

时间:2014-02-27 18:33:14

标签: loops while-loop autoit

我遇到了代码循环问题。它只是运行然后结束。我可以编译它,当我运行它然后立即结束永远不会循环。

我要做的是让此代码查找.bmp,然后如果找到则点击其他.bmp,因此需要始终扫描.bmp

以下是代码:

#include <ImageSearch.au3>

HotKeySet ("S" , "Start")

$x = 0
$y = 0
$heal = 0
$mp = 0
$poth = 0
$potm = 0
$allon = 1


Func Start()
While 1
   $Search = _ImageSearch('healthlow.bmp' , 0)
   If $Search = 1 Then
      $SearchPoth = _ImageSearch('poth.bmp' , 0, $x, $y, 0)
      If $SearchPoth = 1 Then
         MouseMove( $x, $y, 10 )
         MouseClick( "Left" , $x, $y, 10 )

      EndIf
   EndIf
   Sleep 30000
   WEnd
EndFunc

我试过了:

While 1 = 1

或者创建一个始终为真的变量。

2 个答案:

答案 0 :(得分:0)

您永远不会调用您的函数Start()。仅宣布它是不够的。您必须在主程序流程中至少一次显式调用它。关键是,程序中没有时间等待按下定义的HotKey。定义了该函数,之后程序刚刚结束,因为正常的程序流程(从第一行到最后一行)结束。您需要在函数定义之外放置另一个无限的Sleep-Loop,以便程序等待HotKey输入...... ;-)并且您可能并不是要将While-Loop放在函数内部 - 或者您是希望在按下S

后,每30秒定期搜索一次图像
While True
    Sleep(1) ; this could be much longer, doesn't really matter...
WEnd

答案 1 :(得分:0)

  

我遇到了代码循环问题。它只是运行然后结束。我可以编译它,当我运行它然后立即结束永远不会循环。

While -loop退出pressing Q(未经测试,无错误检查):

Global Const $g_sKeyQuit    = 'q'
Global Const $g_iDelay      = 500

Global       $g_bStateQuit  = False

Main()

Func YourCode()
    Local Static $iCount = 0

    $iCount += 1

    ConsoleWrite($iCount & @LF)

EndFunc

Func Main()

    Start()

    While Not $g_bStateQuit

        YourCode()
        Sleep($g_iDelay)

    WEnd

    Exit

EndFunc

Func SetStateQuit()

    $g_bStateQuit = True

EndFunc

Func Start()

    HotKeySet($g_sKeyQuit, 'SetStateQuit')

EndFunc

视觉解释(在While中说明Main() -loop):

Conditional While-loop

  

我要做的是让此代码查找.bmp,然后如果找到则点击其他.bmp,因此需要始终扫描.bmp

根据需要替换YourCode()的内容。 While -loops也可以是paused