Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Объявление переменной (http://forum.oszone.net/showthread.php?t=143679)

DenNC 28-06-2009 12:06 1153670

Объявление переменной
 
Здравствуйте. Решил научиться писать программы на AutoIT и столкнулся с небольшой проблемой объявления переменных. Уверен, исправляеться она просто, но сижу уже сутки и никак сделать немогу, помогите пожалуйста.
Вобщем когда программа была в одном файле и без функций интерфейса GUI все работало нормально, но после GUI попросила объявить некоторые переменные, вот с одной то я и столкнулся, никак объявить не могу, прога пишет
"Variable used without being declared.:" на файле warp.au3 на строке "if $belt=1 Then $y=0"



файл Main.au3
Код:

#include <GuiConstantsEx.au3>
#include <start.au3>

Opt('MustDeclareVars', 1)
Opt("GUIOnEventMode", 1)

Global $ExitID
Global $number_belt

GUI()


Func GUI()
        Local $YesID

                ; GUI
                GuiCreate("AI BOT 1.0", 400, 300)

                ; TAB
                GuiCtrlCreateTab(10, 0, 380, 260)
                GuiCtrlCreateTabItem("main")
                GuiCtrlCreateLabel("Number of belts", 20, 40)

                               
        $YesID = GUICtrlCreateButton("Start", 10, 260, 100, 30)
        GUICtrlSetOnEvent($YesID, "Start")

        $ExitID = GUICtrlCreateButton("Exit", 290, 260, 100, 30)
        GUICtrlSetOnEvent($ExitID, "OnExit")

        GUISetOnEvent($GUI_EVENT_CLOSE, "OnExit")

        GUISetState()  ; display the GUI

        While 1
                Sleep(1000)
        WEnd
EndFunc

Func Start()
        main2()
EndFunc

Func OnExit()
        Exit
EndFunc


файл start.au3
Код:

WinMove("EVE","",0,0)

#include "attack.AU3"
#include "warp.AU3"

Func main2()
        Local $x
        $x=1
        MsgBox(0,1,"инициализация",2)
       
        Do
                warp($x)
                sleep(30000)
                attack()
                $x=$x+1
        Until $x=GUICtrlRead($numberbelt)

        sleep(2000)
        MsgBox(0,1,"завершение работы программы",2)
EndFunc


файл warp.au3
Код:

;WinMove("EVE","",0,0)

;инициализация точки
$WinPos = WinGetPos("EVE")
$tochkaX = $WinPos[0] + 57
$tochkaY = $WinPos[1] + 73

;инициализация меню
$WinPos = WinGetPos("EVE")
$menuX = $tochkaX + 70
$menuY = $tochkaY + 10

;инициализация меню астероидов
$WinPos = WinGetPos("EVE")
$asteroidX = $menuX + 200
$asteroidY = $menuY + 0

;инициализация первого белта
$WinPos = WinGetPos("EVE")
$beltX = $asteroidX + 190
$beltY = $asteroidY + 3

;функция варпа, передаваемое значение - номер белта
func warp($belt)
        if $belt=1 Then $y=0
        if $belt=2 Then $y=17
        if $belt=3 Then $y=34
        if $belt=4 Then $y=51
        if $belt=5 Then $y=68
        if $belt=6 Then $y=85
        if $belt=7 Then $y=102
        if $belt=8 Then $y=119
        if $belt=9 Then $y=136
        if $belt=10 Then $y=153
        if $belt=11 Then $y=170
                       
                MouseClick("left", $tochkaX, $tochkaY, 1, 20)
                sleep (1000)
                MouseClick("left", $menuX, $menuY, 1, 20)
                sleep (1000)
                MouseClick("left", $asteroidX, $asteroidY, 1, 20)
                MouseClick("left", $asteroidX, $asteroidY+$y, 1, 20)
                sleep (1000)
                MouseClick("left", $beltX, $beltY+$y, 1, 20)
        MsgBox(0,1,"варпаем на "& $belt &" астероид",2)
EndFunc


DenNC 28-06-2009 13:07 1153693

Вобщем сутки не мог решить, а как тему повесил, через час сам сделал. Спс большое за внимание :).

SyDr 28-06-2009 13:08 1153695

Проверить нормально не могу. Нет файла attack.au3
Во-вторых, зачем всё в отдельных файлах? Ведь предназначение одно?
Может конструкцию if $belt=n Then $y=k заменить на
$y = ($belt-1) * 17

А с "ошибкой" всё просто:
Установлена опция: перeменные должны быть обявлены Opt('MustDeclareVars', 1)
А переменная $y не обявлена.
Перед тем, как использовать её:
В функции Local $y или Dim $y

DenNC 28-06-2009 13:58 1153735

Спс большое, а я все думал, что не объявлена belt и ничего не мог поделать, про игрик вообще не думал.


Время: 23:16.

Время: 23:16.
© OSzone.net 2001-