Доброго времени суток.
Вопрос по Findimage:
Имеется несколько сохранённых картинок. Например, звезда, треугольник, квадрат и т.д.
Возможно ли объединить все искомые картинки в один массив? Например:
--lua
local handle = findwindow ("Безымянный")
local startX, startY, endX, endY = 0, 0, 1920, 1080
local path = [[C:\\Image]]
local arr = {"blackstar","bluestar","green","orangearr","purple","redstar"}
for i=1, #arr do
local image, a = findimage (startX, startY, endX, endY, {path .. "\\" .. arr[i] .. ".bmp"}, 2)
end
Добрый день, нужна помощь. Где-то ошибся, но не могу разобраться где:
local arrr, ar = findimage (startX, startY, endX, endY, {opredeliteou}, 2)
while (arrr) do
local brrr, br = findimage (startX, startY, endX, endY, {ou}, 2)
while (brrr) do
kleft (brrr[1][1], brrr[1][2])
wait (100)
brrr, br = findimage (startX, startY, endX, endY, {ou}, 2)
end
local crrr, cr = findimage (startX, startY, endX, endY, {prodoljit}, 2)
while (crrr) do
kleft (crrr[1][1], crrr[1][2])
wait (100)
crrr, cr = findimage (startX, startY, endX, endY, {prodoljit}, 2)
end
end
local drrr, dr = findimage (startX, startY, endX, endY, {opredeliteod}, 2)
while (drrr) do
local errr, er = findimage (startX, startY, endX, endY, {od}, 2)
while (errr) do
kleft (errr[1][1], errr[1][2])
wait (100)
errr, er = findimage (startX, startY, endX, endY, {od}, 2)
end
local crrr, cr = findimage (startX, startY, endX, endY, {prodoljit}, 2)
while (crrr) do
kleft (crrr[1][1], crrr[1][2])
wait (100)
crrr, cr = findimage (startX, startY, endX, endY, {prodoljit}, 2)
end
end
Вы заходите в цикл while (arrr) do и выхода из него нет он будет вечно крутить свои условия.
условие выхода из цикла какое должно быть? в данный момент есть условие входа - мы нашли arrr. Факт этого нахождения никогда уже не изменится - уже нашли. Т.е. вам либо нужно обновлять этот поиск (repeat может быть удобнее в таком варианте) либо делать какое-то иное условие выхода из цикла.
А для lua в пилоте нет какой-нибудь команды типа end_while? )
А вообще картинка "ОпределитеОУ" на экране пропадает. Разве не перестаёт действовать условие?
Если внутри цикла while проверить еще раз наличие картинки ОпределитеОУ, то вы выйдите из цикла.
local arrr, ar = findimage (startX, startY, endX, endY, {opredeliteou}, 2)
while (arrr) do
local brrr, br = findimage (startX, startY, endX, endY, {ou}, 2)
while (brrr) do
kleft (brrr[1][1], brrr[1][2])
wait (100)
brrr, br = findimage (startX, startY, endX, endY, {ou}, 2)
end
local crrr, cr = findimage (startX, startY, endX, endY, {prodoljit}, 2)
while (crrr) do
kleft (crrr[1][1], crrr[1][2])
wait (100)
crrr, cr = findimage (startX, startY, endX, endY, {prodoljit}, 2)
end
arrr, ar = findimage (startX, startY, endX, endY, {opredeliteou}, 2)
end
--lua
if true then
local c = 123 -- локальная переменная, существует только в этом блоке if end
end
log(c) -- nil переменной не существует
--lua
local c
if true then
c = 123
end
log(c)
local aa = findimage()
while (aa) do
тело_кода
end
local ab = findimage()
while (ab) do
тело_кода
end
local ac = findimage()
while (ac) do
тело_кода
end
while (aa) do
local aa = findimage()
тело_кода1
end
while (aa) do
local aa = findimage()
тело_кода2
end
while (aa) do
local aa = findimage()
тело_кода3
end
local aa = findimage()
local ab = findimage()
local ac = findimage()
while (aa) do
тело_кода
end
while (ab) do
тело_кода
end
while (ac) do
тело_кода
end
Если объявить локальную переменную внутри цикла, то областью видимости будет только этот цикл.
Первый и третий будет работать. Опять же, в "теле кода" нужно какое-то условие, чтобы выйти из цикла while.
Это понятно. Для варианта №2, если, например, будет:
while (aa) do
local aa = findimage(X) --присвоили, нашли X
kleft (aa[1][1], aa[1][2]) --клик, картинка пропала
aa = findimage(X) -- проверка отсутствия X
end -- цикл закончился
while (aa) do
local aa = findimage(Y) --присвоили, нашли Y
kleft (aa[1][1], aa[1][2]) --клик, картинка пропала
aa = findimage(Y) -- проверка отсутствия Y
end -- цикл закончился
while (aa) do
local aa = findimage(Z) --присвоили, нашли Z
kleft (aa[1][1], aa[1][2]) --клик, картинка пропала
aa = findimage(Z) -- проверка отсутствия Z
end
local cycle = function(image_name)
local aa = findimage(image_name)
while aa do
kleft(aa[1][1], aa[1][2])
aa = findimage(image_name)
end
end
for i = 1, #image_arr do
cycle(image_arr[i])
end
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)