Автор: yodich 27.8.2020, 18:33
Всем привет!
такая проблема, есть код:
Исходный код
--lua
function (p1,p2,p3,p4)
local startX, startY, endX, endY = 0, 0, 1920, 1080
local path = [[F:\image]]
local image = {"Image_0", "Image_1", "Image_2"}
for i=1, #image do
local arr, a = findimage (startX, startY, endX, endY, {path .. "\\" .. image[i] .. ".bmp"}, p1,p2,p3,p4)
--------------------- вот тут уже ума не хватает ---------------------
--пробовал подобным путем сделать, да вот не получается и уже голову сломал как это сделать если честно
if image [1] then
-- если найдена 1 картинка, то выполняем то-то
break
end
if image [2] then
-- если найдена 2 картинка, то выполняем то-то
break
end
if image [3] then
-- если найдена 3 картинка, то выполняем то-то и тд
break
end
--------------------------------------------------------------------------
end
end
Мне в условии нужно определить какая именно картинка найдена из массива чтобы выполнять определенные действия именно по этой картинке.
---
См. правило 1.18
Автор: nykep 27.8.2020, 19:27
я в луа не шарю, но логика например может быть такой : внутри for пишешь if если картинка нашлась что-то вроде if a > 0(просто не знаю как на луа), выполняем break, дальше вне цикла for , условия как у тебя только if i == 1, i == 2 или i == 3.
Автор: yodich 27.8.2020, 19:39
Цитата(nykep @ 27.8.2020, 21:27)
я в луа не шарю, но логика например может быть такой : внутри for пишешь if если картинка нашлась что-то вроде if a > 0(просто не знаю как на луа), выполняем break, дальше вне цикла for , условия как у тебя только if i == 1, i == 2 или i == 3.
спасибо, только так к сожалению не пойдет
Автор: nykep 27.8.2020, 19:42
ну тогда все как у тебя только условия такие if a > 0 and i == 1 then
Автор: yodich 27.8.2020, 19:55
Цитата(nykep @ 27.8.2020, 21:42)
ну тогда все как у тебя только условия такие if a > 0 and i == 1 then
так то можно попробовать по идее...
просто получится горкомовский код, мне этого не надо.
могу сделать так:
Код
--lua
local path = [[C:\image]]
local image1 = "Image_0"
local arr, a = findimage (0, 0, 1920, 1080, {path .. "//" .. image1 .. ".bmp"}, 2, 50, 20, 5)
if arr then
msg ("ok")
else
msg ("error")
end
только тоже придется кучу переменных вставлять и каждый раз все переписывать для каждой картинки, мне этого не надо, получится очень много кода
Цитата(nykep @ 27.8.2020, 21:42)
ну тогда все как у тебя только условия такие if a > 0 and i == 1 then
хотя ладно, пусть будет так, спасибо!)
Автор: nykep 27.8.2020, 20:17
ну если тебе при нахождении определенной картинки надо выполнить определенные действия, то я не знаю как сделать иначе, смотря что за действия конечно, но если для каждой картинки они всегда разные, то для каждой и придется их писать. Если бы я себе такое делал не на луа написал бы так
Код
for #i 1 3 1
set #a findimage ()
if a > 0
if #i = 1
//действия
break
end_if
if #i = 2
//действия
break
end_if
if #i = 3
//действия
break
end_if
end_if
end_for
Ты же когда сам смотришь на экран видишь красную картинку делаешь одно, видишь синюю делаешь другое, условия у тебя - если красная то, если синяя то. А как иначе заставить делать его то что ты хочешь?
Автор: yodich 27.8.2020, 21:47
Цитата(nykep @ 27.8.2020, 22:17)
А как иначе заставить делать его то что ты хочешь?
да я уже сделал) у меня функция которая за каждую картинку делает определенные действия. я уже победил и код составил не большой)
спасибо за помощь😎👍
----
См правило 1.8