Вверх ↑
Ответов: 35
Рейтинг: -1
#1: 2017-06-04 10:00:20 ЛС | профиль | цитата
flint2 писал(а):
Сможешь написать водном IC - сумневаюсь.


Проще на дельфине чистом накатать чем велосипеды типа IC изобретать.. Просто была мысль от "От Лукавого" что можно по быстрому кубиками без кода решить данную задачу. (Бота для вота делаю) Но увы... Вернулся к автоит и все по быстрому решил..
andrestudio писал(а):
"писатель захотел стать художником"


Если бы захотел то стал бы рисовать на питоне))) На нем и Нейросетку в 11 строк сваять можно


И все же как то не верится что решения на кубиках нет.. Скорее мы его не видим.
То что успел набросать делюсь Ибо уже не надо
Add(Button,3183747,77,462)
{
Left=5
Top=470
Caption="Поиск"
link(onClick,8272130:doEvent1,[])
}
Add(Label,16719776,329,469)
{
Left=235
Top=435
Width=97
Height=22
Caption="ms"
}
Add(Hub,8272130,161,462)
{
OutCount=4
link(onEvent1,14227323:##add,[(203,468)(203,412)])
link(onEvent2,13352437:doEvent1,[])
link(onEvent3,14728094:In,[(185,482)(185,503)])
link(onEvent4,8584492:doTimer,[(188,489)(188,76)])
}
Add(Label,2751625,756,455)
{
Left=10
Top=445
Width=85
Caption="Мышь"
}
Add(Timer,10241311,420,455)
{
Interval=100
Enable=1
link(onTimer,2407579:doString,[])
}
Add(FormatStr,2407579,714,455)
{
Mask="Х = %1 | Y = %2"
link(onFString,2751625:doText,[])
link(Str1,2362061:Var1,[])
link(Str2,2362061:Var2,[])
}
Add(FormatStr,4171558,791,413)
{
Mask="X=%1 Y=%2"
Point(FString)
link(onFString,15336817:doText,[])
link(Str1,15072728:GetData,[])
}
Add(Label,15336817,840,413)
{
Left=130
Top=440
Width=85
Caption="Результат"
}
Add(StrCat,3796541,280,469)
{
Str2=" мсек"
link(onStrCat,16719776:doText,[])
}
Add(SizeWindow,10540619,231,469)
{
Width=1024
Height=768
link(Handle,14227323:##count,[])
}
Add(Hub,4055485,140,420)
{
InCount=2
OutCount=3
link(onEvent1,14227323:doStop,[])
link(onEvent2,5903204:In,[(161,433)(161,447)])
link(onEvent3,8584492:doStop,[(315,440)(315,83)])
}
Add(GHotKey,13601760,77,420)
{
Alt=1
Key=88
Point(doAlt)
Point(doKey)
link(onEventHotKey,4055485:doEvent1,[])
}
Add(Label,10533358,14,56)
{
Left=70
Top=470
Width=98
Height=17
Caption="Остановить Alt + X"
}
Add(Label,16439978,287,350)
{
Left=185
Top=470
Width=410
Caption=""
}
Add(Hub,8374006,196,350)
{
OutCount=3
link(onEvent1,933422:doWork1,[])
link(onEvent2,13601760:doStartHotKey,[(222,363)(222,387)(72,387)(72,426)])
}
Add(LineBreak,12210862,371,448)
{
Caption="On"
link(Out,10241311:doTimer,[(411,454)(411,461)])
Primary=[14728094,-189,49]
}
Add(LineBreak,13374515,371,497)
{
Caption="Off"
link(Out,10241311:doStop,[(411,503)(411,468)])
Primary=[5903204,-203,-56]
}
Add(MultiElementEx,14227323,231,406)
{
Mode=1
link(onEvent,2362061:doWork1,[])
link(onStop,3796541:doStrCat,[(275,419)(275,475)])
link(Handle,933422:Var1,[])
link(subBitmap,3220404:ImageBitmap,[(244,396)(762,396)])
}
BEGIN_SDK
Add(EditMultiEx,10129213,3,3)
{
WorkCount=#19:##add=Запуск поиска|33:##select=Выбор запущенного поиска|22:doStop=Выключает поиск|
EventCount=#27nEvent=Координаты цели X Y|33nStop=Время затраченное на поиск|
VarCount=#33:##count=Содержит индефикатор окна|
DataCount=#24:Handle=Хендл окна танков|29:subBitmap=Картинка для поиска|
Width=391
Height=172
VOffset=100
HOffset=100
Point(##add)
Point(##select)
Point(##count)
link(##add,11379391:doTimer,[(68,109)(68,111)])
link(doStop,11379391:doStop,[(68,123)(68,118)])
link(##count,13129097:Var2,[(109,134)(116,134)])
}
Add(InlineCode,4095621,259,98)
{
WorkPoints=#12:doFindBitmap|
EventPoints=#8nResult|3:dbg|0
DataPoints=#6:Bitmap|9:subBitmap|
Code=#15:unit HiAsmUnit;|09:interface|029:uses Windows,kol,Share,Debug;|04:type|40: TByteArray = array [0..32767] of Byte;|27: PByteArray = ^TByteArray;|35: TBuf = array of array of integer;|15: FRes = record|19: found: boolean;|17: x,y: integer;|6: end;|14: WH2 = record|43: Width1,Height1,Width2,Height2: integer;|6: end;|2: |28: THiAsmClass = class(TDebug)|10: private|09: public|12: Bitmap,|15: subBitmap,|30: onResult, dbg: THI_Event;|57: procedure doFindBitmap(var _Data:TData; Index:word);|65: function CompareIMG(var buf1:TBuf; buf2:TBuf; WH:WH2): FRes;|5: end;|014:implementation|040:function LoagIMG(var BmpBitmap) :TBuf;|3:var|17: x,y,c: integer;|16: p: pByteArray;|15: buffer: TBuf;|5:begin|36: Bmp.PixelFormat:=pf24Bit;//pf8Bit;|43: SetLength(buffer, Bmp.Height, Bmp.Width);|35: for y:=0 to Bmp.Height-1 do begin|23: p:=Bmp.ScanLine[y];|36: for x:=0 to Bmp.Width-1 do begin|52: c:=((p[x*3+0] shl 8+p[x*3+1]) shl 8)+p[x*3+2];|21: buffer[y,x]:=c;|8: end;|6: end;|19: Result := buffer;|4:end;|072:function THiAsmClass.CompareIMG(var buf1:TBuf; buf2:TBuf; WH:WH2): FRes;|3:var|37: y, x, yy, xx, err, maxerr: integer;|5:begin|56: maxerr:=200; //максимальная ошибка = в диапазоне 0-726|22: Result.found:=false;|7: y:=0;|8: repeat|9: x:=0;|10: repeat|25: Result.found:=true;|12: yy:=0;|12: repeat|14: xx:=0;|14: repeat|55: //Result.found:=buf1[y+yy, x+xx]=buf2[yy,xx];|71: err:=abs(byte(buf1[y+yy, x+xx]) - (buf2[yy,xx] and $0000ff))+|91: abs((buf1[y+yy, x+xx] and $00ff00 shr 8) - (buf2[yy,xx] and $00ff00 shr 8))+|93: abs((buf1[y+yy, x+xx] and $ff0000 shr 16) - (buf2[yy,xx] and $ff0000 shr 16));|49: if err>maxerr then Result.found:=false;|18: inc(xx);|52: until (xx>=WH.Width2) or (Not Result.found);|16: inc(yy);|51: until (yy>=WH.Height2) or (Not Result.found);|13: inc(x);|52: until (x>WH.Width1-WH.Width2) or (Result.found);|11: inc(y);|52: until (y>WH.Height1-WH.Height2) or (Result.found);|28: if Result.found then begin|18: Result.x:=x-1;|18: Result.y:=y-1;|6: end;|4:end;|035:procedure THiAsmClass.doFindBitmap;|3:var|24: Bmp, subbmpBitmap;|21: FindResult: FRes;|21: buf1, buf2: TBuf;|12: WH: WH2;|16: dt,di:TData;|5:begin|36: Bmp := ReadBitmap(_Data,Bitmap);|42: if (Bmp = nil) or Bmp.Empty then exit;|42: subbmp := ReadBitmap(_Data,subBitmap);|48: if (subbmp = nil) or subbmp.Empty then exit;|73: if (Bmp.Width<subbmp.Width) or (Bmp.Height<subbmp.Height) then exit;|4: |25: buf1 := LoagIMG(Bmp);|25: WH.Width1:=Bmp.Width;|27: WH.Height1:=Bmp.Height;|15: //Bmp.Free;|4: |28: buf2 := LoagIMG(subbmp);|28: WH.Width2:=subbmp.Width;|30: WH.Height2:=subbmp.Height;|22: //subbmp.Free; |4: |43: FindResult:=CompareIMG(buf1, buf2, WH);|4: |15: dtNull(dt);|15: dtNull(di);|34: if FindResult.found then begin|53: dtInteger(dt,FindResult.x+(WH.width2 div 2));|54: dtInteger(di,FindResult.y+(WH.height2 div 2));|24: dt.ldata := @di;|35: _hi_onEvent(onResult, dt); |8: end;|4:end;|4:end.|
link(onResult,5695768:doEvent1,[(300,104)(300,146)])
link(Bitmap,2561111:Bitmap,[])
link(subBitmap,13129097:Var3,[(272,89)])
}
Add(TimeCounter,10552413,210,105)
{
link(onStart,4095621:doFindBitmap,[(250,111)(250,104)])
link(onStop,10129213nStop,[(322,118)(322,116)])
}
Add(Hub,5695768,308,140)
{
link(onEvent1,10552413:doStop,[(334,146)(334,139)(198,139)(198,118)])
link(onEvent2,10129213nEvent,[(362,153)(362,109)])
}
Add(ScreenShort,13817426,217,28)
{
link(onCapture,2561111:doLoad,[])
link(Handle,10129213:Handle,[(223,16)(109,16)])
}
Add(Bitmap,2561111,259,28)
{
}
Add(Timer,11379391,133,105)
{
Interval=1
Point(doInterval)
link(onTimer,152795:doEvent1,[(173,111)(173,34)])
}
Add(Hub,152795,182,28)
{
link(onEvent1,13817426:doCapture,[])
link(onEvent2,10552413:doStart,[(203,41)(203,111)])
}
Add(GetDataEx,13129097,110,84)
{
link(Data,10129213:subBitmap,[])
}
END_SDK
Add(MultiElement,933422,231,350)
{
link(onEvent1,16439978:doText,[])
}
BEGIN_SDK
Add(EditMulti,3079797,21,21)
{
EventCount=1
WorkCount=1
VarCount=1
link(doWork1,3751137:doFind,[(56,27)(56,132)])
link(Var1,3751137:Handle,[(27,186)(97,186)])
}
Add(WinEnum,3751137,91,119)
{
link(onFindWindow,9656870:doStrCat,[])
link(Caption,12863172:Value,[])
}
Add(Memory,12863172,91,70)
{
Default=String(WoT Client)
}
Add(StrCat,9656870,133,119)
{
Str1="Найдено окно: "
link(onStrCat,3079797nEvent1,[(243,125)(243,27)])
}
Add(StyleXP,3667158,133,70)
{
}
END_SDK
Add(Hub,13352437,203,469)
{
link(onEvent1,10540619:doWidth,[])
link(onEvent2,10540619:doHeight,[])
}
Add(MultiElement,2362061,714,406)
{
link(onEvent1,15072728:doData,[(782,412)(782,363)])
link(onEvent2,4171558:doString,[])
}
BEGIN_SDK
Add(EditMulti,6401462,21,21)
{
EventCount=2
WorkCount=2
VarCount=2
Width=223
Height=144
link(doWork1,9272755:doEvent1,[(28,27)(28,41)])
link(doWork2,9483123:doClick,[(84,34)(84,118)])
link(Var1,9483123:MouseX,[(27,155)(153,155)])
link(Var2,9483123:MouseY,[(34,161)(160,161)])
}
Add(Hub,9272755,35,35)
{
link(onEvent1,238729:doSeparateMT,[])
link(onEvent2,9483123:doPosition,[(59,48)(59,132)])
}
Add(MouseEvent,9483123,147,112)
{
Point(doPosition)
link(X,9183133:Value,[(160,96)(139,96)])
link(Y,11531058:Value,[(167,107)(188,107)])
}
Add(MT_MultiData,238729,70,35)
{
link(onData1,9183133:doValue,[(125,41)(125,62)])
link(onData2,11531058:doValue,[(174,48)(174,69)])
}
Add(Memory,9183133,133,56)
{
link(onData,6401462nEvent1,[(205,62)(205,27)])
}
Add(Memory,11531058,182,63)
{
link(onData,6401462nEvent2,[(229,69)(229,34)])
}
END_SDK
Add(EventFromData,15072728,791,357)
{
}
Add(MainForm,11997614,91,336)
{
Width=635
Height=542
Caption="Пример использования BitmapArray"
link(onCreate,8374006:doEvent1,[])
}
Add(CounterEx,2644362,560,70)
{
Max=3
Default=-1
Point(doValue)
link(onNext,12807787:doEvent1,[])
}
Add(ArrayRW,5936639,756,70)
{
link(Array,7694442:Array,[])
}
Add(If_else,9463291,700,84)
{
link(onTrue,2644362:doValue,[(738,90)(738,121)(549,121)(549,83)])
link(Op1,7694442:Count,[(706,62)(769,62)])
}
Add(Hub,12807787,623,70)
{
OutCount=5
link(onEvent1,5936639:doRead,[])
link(onEvent2,9463291:doCompare,[(651,83)(651,90)])
link(onEvent3,6831312:doValue,[(645,90)(645,188)])
link(onEvent4,3220404:doLoad,[(654,97)(654,146)])
link(onEvent5,7694442:doGetName,[(659,104)(659,20)])
}
Add(Label,14677961,700,182)
{
Left=510
Top=5
Width=66
Height=17
Caption="Index vfssiva"
}
Add(BitmapArray,7694442,756,7)
{
Bitmaps=['arta'=[ZIPDA02000078DA9591BF6AC25014C6B5BBEFE0D827E80374F7456C15FC5795423015C1D8A19A41A89388228264AB936F50BE4141B06E66081A496D2236E0607ACEC5A1DB8D077E70B9E7FBEE3D7FEE13AB9B88883BE296885D8846E2E2BE7FC9FF0FD334617B1E7ECF677CFBBE383BC723768703FC20C0D675E19D4E7009CEB37E6018D03B1DBCB5DB5258F7DEEDA2D16AA15CA9A0A828A1D09A4DA89A86876C36148FB91C9E6B3528F53A52F93C92998C14F694AB55945415E942219487DF7EA23EB8B717AA4FE13F25A854D3ABAEE3633AC5603C466F349232A4191B93899837160B7CCEE75266CB25BED66BE1F9A15D6DF67B29BC5BD65B968580F61D16D6EF6CFB2A8F4D7AC771AEF2B0FE0F367FF2A6],'vboi'=[ZIPFE00000078DA73F2FDC700016640AC01C48A40CC04C48C0C1260F113407C840F8261E0EDDBF77575B359D827B2706C60E5DCCDCAB9978573170BC77656AE9DDC7C9D274E5C7CFBF6DDECD96B23222A2E5DBAF5F4E98B9D3B8F7A78E43032BB31736E64E5DAC5CD5BBE6EDDFEF7EF3F42D0BB771F3E7CF8F4EEDDC7B97337B073D5B0716E90966DFAFFE9D3E70D1BF6B171CF64E5390C446C3C4758F94EB0F21E63E5D9CDC2D93179F2F22F5FBE3C7DFA525CDC9581C19881C114E80346966866AE59ACBC7BD904CEB3F1EDE3E2CB2B2D9B74E4C8F9172F5E03D1A1436773F37AB8F84A5879B7036565153AFF03005CBE624B],'vlivo'=[ZIP4E06000078DA9D544D48545114B64DF7DE79F3A7E338338D33CD9499698ECE14236A414E1623932D846C61412B29422134940A09AA451415084528413F9B5645081531EBC2F816414821D1A66D8B88162DA2CE3DF7C13C6D9C6C1E7C3CDE7DE79EEF3BBFB9C1C31B6BF8C9125A081E429CB0A126C1E761FBBFF351CA82526E828F504BA8877285E91D85746D86F46D83F4B643D676427A5A0949FAA7089E55F68D902A41F6DB210319B40F4EE2EEA7DF189D2BD2FD1D0E0EB25721877D33210D153980F32F977103DF114A0D33574953A8A4C7A5F5A420EAF6E0E0C43DE6C84F3F800876D3798B6D1F246C22C421E556F625825D08741CC7F5B7DF3053FC0C152B40FA339056D3CA18E416F6237D1988D07E9CB85D648E8E239720EA7BC8571BDB188EA88941510C9E0ED2B417CD03D36C7FF2FE1BBADFCF7E382764A7548410B335B541F8BA20628730B5F011B34B3F11CA8E1A0EF74EB26962FD250EF2E1494384FBB06F7C9E390A171ED3778ECE8943B6D8BA1A4B1CE447D477C3DF3A82ABAFBFE2E2AB2F90C9213E93EE76934BCAA9CE1573E8B8BDBB59F7C8CDE7CCB1EBD8B51207D551FBD5FE75BEA46573502D92B949DC59FE85D30F17211A0620BCC461A58C6E99E438741D3957759A238FB34F9738EE68F718F9E8636ECEAFB6B175E9DAE8FC69CD3DA3B3AC69E8CA33D25480F0F71247DADCA1584CBE22E60E6915815E9C7BB1CCBA02E953F49D37BADCD4CB56AB23C791EA791CF14C3C796FC7335E399E72797BB468B8FECA5BA39DB784A32FD7A88F9E4F477DAAE983B2FD3636C75C83336BF5DBCABE96FE2CC732B5F0A1425FAF9A1F9EE97FCDCF3AE674F8F2AA39AD661F54DE3BFD67E6CBEC9DF5EDB75BEF7EA0A1F3A8BDDFAAD9A3FFBFAF5D2E57F97BAC33626A68C54D0F5866E7FC01EF880B97],'vpravo'=[ZIP8206000078DAA5544968535114AD1BFF7BF9998726354DDB38D45ACD684949AB60639594349B827551055741292D482B1695220E0B51542828D222386C5C2922A848D68A7216821425881BB72E445CB810BDFFBE9F26A669093170096F38FF9C73EF7D3793BFB0B1857F298A1E0A1B4527C586962EDE1F35CFAB7F52BA20A597C247E1AF0A63CF0D75EEA0B052E81416F33C08A97740583AF95FCA768AB62A6C2D6E13842D4CD10BE18A43D823108E6D0A6F7CCB12A8836BA77B3B50582CE2CEE73F88E467213C49C26D87905D8AF31F9C8DD621E6688D1FC6CDF73F71F66509B2ED00611214DD15DC8A4E87C2D87BA0F9D2C8CEDD67AEE1934BD0DC7B683F4A1AAB7432CEA5B4E95B219C49C8500EF3C52FB8F6EE3B3CB1A3F49D7EE5536CA17B1DEC5DE5973062339DED84E61D406CFC12731DBB5584E6DF4FFA92ACC3B853F11664CDEC99CE35FF308EDF7BC3B8EE9139D2B8576994656F41B30E541B41FAACBB98CB9F2A6061F9174E3FFB082D9023DD29D6A134864C5FA63E411A6CC415C8203FFF88B9F64D2DD27A88F6298FB29C7F9FAA2BE58673648D10571A223C86F3AFBEE2CAEB6F70F64EA83DD2A1B8DCA6AF10AF394F26D7EE2357996BE2C673F659CE87CA77595F58F1EB5168F6347B997CF816B74BBF11CECCAA9A1197EA216F459F911FC3AFBD8FEE0C21989EE67CCC3CFE405C5908775F15C6CC9FE1C9C0E80968CE41E61ABBFC94350E1416D8D72A8C91739D3C59E34A9F270B4FE204EB3BF3A244EBC1FFE459CBCF14FB39F564B9CA8F6BE5ADAECA5BEB08261FD4CB5B4D7DE8FDAD591FE256F569A60FEAF75BEE9CD96FD34B75FA6DBDBEFE042D340ACDD15FD3D70DBC1F5BACE6FDD4BCD343171B78A74DCC833A73E7E0CCDDF5E78E39DFFCD1715CC78FC6E65B3373B48979FD176AD71820]]
Point(doGetName)
Point(onGetName)
}
Add(Image,3220404,756,140)
{
Left=15
Top=10
Width=320
Height=290
link(Bitmap,5936639:Item,[])
}
Add(Label,11659058,14,7)
{
Left=345
Top=10
Width=132
Height=17
Caption="Имя картинки в массиве"
}
Add(Memory,6831312,658,182)
{
link(onData,14677961:doText,[])
}
Add(Timer,8584492,476,70)
{
Interval=3000
Enable=1
link(onTimer,2644362:doNext,[])
}
карма: -4
Нечего сказать по делу? Просто проходим на natribu.org
0
Редактировалось 2 раз(а), последний 2017-06-04 10:16:13