Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Можете пример написать
В архиве видео: https://drive.google.com/open?id...fkhSCvqwORyiuW6m
Код, который использовался. (Отобразить)CODE:char Text[10];
loadsymbolbase ("C:\Program Files\Kibor\Новая база.sib");
// фигуры в базе названы русскими заглавными буквами: К, П, Ш, Р, Т, З
int Color_Text[6];
Color_Text[0]=98304; // зелёный
Color_Text[1]=8601319; // розовый
Color_Text[2]=42494; // жёлтый
Color_Text[3]=254; // красный
Color_Text[4]=0; // чёрный
Color_Text[5]=16646144; // синий
// что надо найти
char c='Ш'; // какая фигура
int color=Color_Text[1]; // цвет, взят из массива для readtext
// зона поиска фигур
int startX=10;
int startY=151;
int endX=240;
int endY=192;
//////////
int centrX, centrY; // координаты центра фигуры
int r=10; // разбежность для scanpixel
int len_str, result;
int count=readtext (RU, #Text[0], 40, 3, -1, -1, -1, #Color_Text[0], -1, 40, -1, startX, startY, endX, endY, -1); // ищем фигуры
//messagebox(count); // количество распознаных фигур
if(count>0) // если найдены
{
len_str=size(format(#Text[0])); // длина строки, т. е. фигуры в виде букв и пробелы
//messagebox(Text[0]+" "+Text[2]+" "+Text[4]+" "+Text[6]); // распознанные фигуры
// проверяем есть ли прямоугольники
for(int i=0; i<len_str; i++)
{
if(Text[i]=='К') // если найден квадрат, т. е. 'К'
{
result=square(symbolwidth(i), symbolheight(i)); // вызываем функцию проверяющую квардат или прямоугольник
if(result==1)Text[i]='П'; // если функцию вернула 1, значит не квадрат, а прямоугольник, пишем вместо 'К', 'П'
}
}
//messagebox(Text[0]+" "+Text[2]+" "+Text[4]+" "+Text[6]); // результат после проверки квадрат или прямогугольник
// ищем нужную фигуру
for(i=0; i<len_str; i++)
{
centrX=startX+symbolxpos(i)+symbolwidth(i)/2; // центр фигуры по X
centrY=startY+symbolypos(i)-symbolheight(i)/2; // центр фигуры по Y
//messagebox(format(centrX)+" "+format(centrY));
if(Text[i]==c && scanpixel(centrX, centrY, color,r,r,r,r,r,r,-1)==1) // проверяем тип фигуры и цвет
{
string s=Text[i];
resettextout(1); // обновить экран, чтобы убрать старые сообщения
textout(0, centrX, centrY, s, 2); // выводим сообщение
mousemove(centrX, centrY); // навести курсор на фигуру
sleep(2000);
}
}
}
function square(int width, int height)
{
if(height*100 < width*80)return 1; // если высота отличает от ширины более чем на 20%
return 0;
} |