Kibor |
Отправлено: 12 Января, 2014 - 03:56:13
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Вот верный код. После теста.
CODE:if (findimage(1, #im_stvol[0][0], 0, #stvol_X, #stvol_Y, 0, 0, xe, ye, z, z, z, z, z, z, 100, 1, -1)==1)
{
int x1=90;
int y1=17;
int xn=stvol_X+70, yn=stvol_Y+32;
int xn1=xn+x1, yn1=yn+y1;
int min=999999;
s: if (xn<xn1)
{
yn=stvol_Y+32;
s1: if (yn<yn1)
{
if (getcolor(xn, yn)!=16777215)
{
if (xn<min){min=xn; stvol_X=xn-2;}
}
yn++;
goto s1;
}
xn++;
goto s;
}
X[0]=stvol_X; Y[0]=stvol_Y+36;
X[1]=X[0]+7; Y[1]=Y[0]+13; |
|
|
darow |
Отправлено: 12 Января, 2014 - 10:33:45
|
Наблюдатель
Покинул форум
Сообщений всего: 45
Дата рег-ции: Янв. 2014
Откуда: Украина
Репутация: 0
|
вот окончательный обкатанный вариант:
CODE:if (findimage(1, #im_stvol[0][0], 0, #stvol_X, #stvol_Y, 0, 0, xe, ye, z, z, z, z, z, z, 100, 1, -1)==1)//находим стартовую точку
{
int x1=15;
int y1=1;
int xn=stvol_X+70, yn=stvol_Y+38;
int xn1=xn+x1, yn1=yn+y1;
int min=999999;
//mousemove (xn ,yn); sleep(1000);
s: if (xn<xn1)
{
yn=stvol_Y+38;
s1: if (yn<yn1)
{
if (getcolor(xn, yn)!=16777215)
{
if (xn<min){min=xn; stvol_X=xn-2;}
}
yn++;
goto s1;
}
xn++;
goto s;
}
X[0]=stvol_X; Y[0]=stvol_Y+38;
X[1]=X[0]+7; Y[1]=Y[0]+13;
(Добавление)
единственное в процессе обкатки мне показалось, что немного поиск пикселя занимает много времени особенно если увеличивать параметр: int y1=1; (ширина поиска пикселя)
поэтому я его сузил до максимума поэтому стало приемлемо...
(Добавление)
Так вообщем число мы научились находить, теперь попробуем производить действия с ним а именно сравнивать. Попробуем такую задачу решить: если kf1 меньше 5, то выдать звуковой сигнал:
CODE:if (kf1<=5; beep (1000. 500))
че-то выдает ошибку
(Добавление)
немного натупил с синтаксисом:
CODE:if (kf1<=5)
{
beep (1000, 500)
}
теперь ошибку не выдает но и звук не выдает
(Добавление)
видимо он не может сравнить 5 с kf1, ему нужно 5 сравнивать с числом а не с буквами
(Добавление)
как кибору указать kf1 не в буквенном а в числовом значении которое у него найдено в скрипте? |
|
|
darow |
Отправлено: 12 Января, 2014 - 12:03:48
|
Наблюдатель
Покинул форум
Сообщений всего: 45
Дата рег-ции: Янв. 2014
Откуда: Украина
Репутация: 0
|
так сравнивать начали а теперь добавляем цикл, и пока кибор завис:
CODE:
int color, xe, ye;//разрешение экрана
getdisplay(color, xe, ye);//Узнать разрешение экрана
int stvol_X, stvol_Y;// координаты стартовой точки в волейболе
int k1_X[2], k1_Y[2];//координаты начала и конца рамки где искать 1коэф
int Ck1_x, Ck1_y;//координаты найденых цифр 1коэф 3шт
int fl1[10];// флаг, 1 если найдена цифра 1коэф
int rast_k1_x;//растояние от цифры до начала рамки поиска 1коэф
int n;
int CIF;
int X[2], Y[2];
string kf1="";// 1коэф
int z=10;
int razmerX[11];//тут размеры рисунков цифр
//Загрузка рисунков
int im_stvol[121][11];
loadimage (#im_stvol[0][0], "C:\citi\Image_ishody po partiyam.bmp");//рис стартовой точки в волейболе
//рис цифр
int ttt[20][20];loadimage (#ttt[0][0], "C:\citi\t.bmp");
int C_0[20][20];loadimage (#C_0[0][0], "C:\citi\0_citi.bmp");
int C_1[20][20];loadimage (#C_1[0][0], "C:\citi\1_citi.bmp");
int C_2[20][20];loadimage (#C_2[0][0], "C:\citi\2_citi.bmp");
int C_3[20][20];loadimage (#C_3[0][0], "C:\citi\3_citi.bmp");
int C_4[20][20];loadimage (#C_4[0][0], "C:\citi\4_citi.bmp");
int C_5[20][20];loadimage (#C_5[0][0], "C:\citi\5_citi.bmp");
int C_6[20][20];loadimage (#C_6[0][0], "C:\citi\6_citi.bmp");
int C_7[20][20];loadimage (#C_7[0][0], "C:\citi\7_citi.bmp");
int C_8[20][20];loadimage (#C_8[0][0], "C:\citi\8_citi.bmp");
int C_9[20][20];loadimage (#C_9[0][0], "C:\citi\9_citi.bmp");
razmerX[0]=imagewidth(#C_0[0][0]);
razmerX[1]=imagewidth(#C_1[0][0]);
razmerX[2]=imagewidth(#C_2[0][0]);
razmerX[3]=imagewidth(#C_3[0][0]);
razmerX[4]=imagewidth(#C_4[0][0]);
razmerX[5]=imagewidth(#C_5[0][0]);
razmerX[6]=imagewidth(#C_6[0][0]);
razmerX[7]=imagewidth(#C_7[0][0]);
razmerX[8]=imagewidth(#C_8[0][0]);
razmerX[9]=imagewidth(#C_9[0][0]);
razmerX[10]=imagewidth(#ttt[0][0]);
//поиск не белого пикселя
a: if (findimage(1, #im_stvol[0][0], 0, #stvol_X, #stvol_Y, 0, 0, xe, ye, z, z, z, z, z, z, 100, 1, -1)==1)//находим стартовую точку
{
int x1=15;
int y1=1;
int xn=stvol_X+70, yn=stvol_Y+38;
int xn1=xn+x1, yn1=yn+y1;
int min=999999;
s: if (xn<xn1)
{
yn=stvol_Y+38;
s1: if (yn<yn1)
{
if (getcolor(xn, yn)!=16777215)
{
if (xn<min){min=xn; stvol_X=xn-2;}
}
yn++;
goto s1;
}
xn++;
goto s;
}
X[0]=stvol_X; Y[0]=stvol_Y+38;
X[1]=X[0]+7; Y[1]=Y[0]+13;
int g=0;
kf1="";
lop:
//ищем по 1 цифре в рамке поиска. записываем координаты
if (findimage(1, #C_0[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"0"; g=0; goto ww;
}
if (findimage(1, #C_1[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"1"; g=1; goto ww;
}
if (findimage(1, #C_2[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"2"; g=2; goto ww;
}
if (findimage(1, #C_3[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"3"; g=3; goto ww;
}
if (findimage(1, #C_4[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"4"; g=4; goto ww;
}
if (findimage(1, #C_5[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"5"; g=5; goto ww;
}
if (findimage(1, #C_6[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"6"; g=6; goto ww;
}
if (findimage(1, #C_7[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"7"; g=7; goto ww;
}
if (findimage(1, #C_8[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"8"; g=8; goto ww;
}
if (findimage(1, #C_9[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"9"; g=9; goto ww;
}
if (findimage(1, #ttt[0][0], -1, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z , 100, 1, -1)==1)
{
kf1=kf1+"."; g=10; goto ww;
}
goto t;
ww:;
X[0]=X[0]+Ck1_x+razmerX[g];
X[1]=X[0]+7;
goto lop;
}
}
t:;
//messagebox(kf1);
//i: ;
//sleep 3000;
if (formatsn(kf1)<=5)
{
beep (1000, 500)
}
goto a;
|
|
|
Kibor |
Отправлено: 12 Января, 2014 - 12:14:54
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
а в чем зависание?
он крутит по кругу и если будет найден
Цитата: if (findimage(1, #im_stvol[0][0], 0, #stvol_X, #stvol_Y, 0, 0, xe, ye, z, z, z, z, z, z, 100, 1, -1)==1)//находим стартовую точку
будет поиск числа и если оно <=5 будет сигнал
Если не будет найдена стартовая точка или число или оно больше 5 будет цикл крутиться.
Остановить Контр шифт Z.
Что б не грузил комп ставить sleep
Цитата: sleep(50);
goto a; |
|
|
Kibor |
Отправлено: 12 Января, 2014 - 12:19:39
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Ну надо перенести переменную:
Цитата:
int color, xe, ye;//разрешение экрана
getdisplay(color, xe, ye);//Узнать разрешение экрана
int stvol_X, stvol_Y;// координаты стартовой точки в волейболе
int k1_X[2], k1_Y[2];//координаты начала и конца рамки где искать 1коэф
int Ck1_x, Ck1_y;//координаты найденых цифр 1коэф 3шт
int fl1[10];// флаг, 1 если найдена цифра 1коэф
int rast_k1_x;//растояние от цифры до начала рамки поиска 1коэф
int n;
int CIF;
int X[2], Y[2];
string kf1="";// 1коэф
int z=10;
int razmerX[11];//тут размеры рисунков цифр
//Загрузка рисунков
int im_stvol[121][11];
loadimage (#im_stvol[0][0], "C:\citi\Image_ishody po partiyam.bmp");//рис стартовой точки в волейболе
//рис цифр
int ttt[20][20];loadimage (#ttt[0][0], "C:\citi\t.bmp");
int C_0[20][20];loadimage (#C_0[0][0], "C:\citi\0_citi.bmp");
int C_1[20][20];loadimage (#C_1[0][0], "C:\citi\1_citi.bmp");
int C_2[20][20];loadimage (#C_2[0][0], "C:\citi\2_citi.bmp");
int C_3[20][20];loadimage (#C_3[0][0], "C:\citi\3_citi.bmp");
int C_4[20][20];loadimage (#C_4[0][0], "C:\citi\4_citi.bmp");
int C_5[20][20];loadimage (#C_5[0][0], "C:\citi\5_citi.bmp");
int C_6[20][20];loadimage (#C_6[0][0], "C:\citi\6_citi.bmp");
int C_7[20][20];loadimage (#C_7[0][0], "C:\citi\7_citi.bmp");
int C_8[20][20];loadimage (#C_8[0][0], "C:\citi\8_citi.bmp");
int C_9[20][20];loadimage (#C_9[0][0], "C:\citi\9_citi.bmp");
razmerX[0]=imagewidth(#C_0[0][0]);
razmerX[1]=imagewidth(#C_1[0][0]);
razmerX[2]=imagewidth(#C_2[0][0]);
razmerX[3]=imagewidth(#C_3[0][0]);
razmerX[4]=imagewidth(#C_4[0][0]);
razmerX[5]=imagewidth(#C_5[0][0]);
razmerX[6]=imagewidth(#C_6[0][0]);
razmerX[7]=imagewidth(#C_7[0][0]);
razmerX[8]=imagewidth(#C_8[0][0]);
razmerX[9]=imagewidth(#C_9[0][0]);
razmerX[10]=imagewidth(#ttt[0][0]);
//поиск не белого пикселя
a: kf1="";
if (findimage(1, #im_stvol[0][0], 0, #stvol_X, #stvol_Y, 0, 0, xe, ye, z, z, z, z, z, z, 100, 1, -1)==1)//находим стартовую точку
{
int x1=15;
int y1=1;
int xn=stvol_X+70, yn=stvol_Y+38;
int xn1=xn+x1, yn1=yn+y1;
int min=999999;
s: if (xn
{
yn=stvol_Y+38;
s1: if (yn
{
if (getcolor(xn, yn)!=16777215)
{
if (xn
}
yn++;
goto s1;
}
xn++;
goto s;
}
X[0]=stvol_X; Y[0]=stvol_Y+38;
X[1]=X[0]+7; Y[1]=Y[0]+13;
int g=0;
lop:
//ищем по 1 цифре в рамке поиска. записываем координаты
if (findimage(1, #C_0[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"0"; g=0; goto ww;
}
if (findimage(1, #C_1[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"1"; g=1; goto ww;
}
if (findimage(1, #C_2[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"2"; g=2; goto ww;
}
if (findimage(1, #C_3[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"3"; g=3; goto ww;
}
if (findimage(1, #C_4[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"4"; g=4; goto ww;
}
if (findimage(1, #C_5[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"5"; g=5; goto ww;
}
if (findimage(1, #C_6[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"6"; g=6; goto ww;
}
if (findimage(1, #C_7[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"7"; g=7; goto ww;
}
if (findimage(1, #C_8[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"8"; g=8; goto ww;
}
if (findimage(1, #C_9[0][0], 16777215, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z, 100, 1, -1)==1)
{
kf1=kf1+"9"; g=9; goto ww;
}
if (findimage(1, #ttt[0][0], -1, #Ck1_x, #Ck1_y, X[0], Y[0], X[1], Y[1], z, z, z, z, z, z , 100, 1, -1)==1)
{
kf1=kf1+"."; g=10; goto ww;
}
goto t;
ww:;
X[0]=X[0]+Ck1_x+razmerX[g];
X[1]=X[0]+7;
goto lop;
}
}
t:;
//messagebox(kf1);
//i: ;
//sleep 3000;
if (formatsn(kf1)<=5)
{
beep (1000, 500)
}
goto a;
|
|
|
|