Budni |
Отправлено: 17 Мая, 2019 - 20:06:03
|
Специалист
Покинул форум
Сообщений всего: 419
Дата рег-ции: Март 2018
Репутация: 2
|
В общем я подумал что можно как то сократить код, как это сделать в данном случае?
CODE:
int x, y, x1, y1, x2, y2, x3, y3, x4, y4;
x=1;y=2;x1=23;y1=3;x2=1;y2=4;x3=23;y3=5;x4=1;y4=6;
Сделать что то типа
CODE:int x[4]={1,23,1,23,1}; int y[4]={2,3,4,5,6};
Блин пока писал вопрос походу сам ответ написал >_<
Или всё же можно как то ещё более компактней сократить код? |
|
|
007wan |
Отправлено: 18 Мая, 2019 - 09:55:17
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Как сократить? Прошу заметить, что текст галочек и расположение разное
Код (Отобразить)CODE:int Object_Checkbox1;//сама галка
int Status_Checkbox1;//статус(так же будет использоваться, когда грузим в файл
char Load_Checkbox1[255];//переменная, когда грузим из файла
int Object_Checkbox2;
int Status_Checkbox2;
char Load_Checkbox2[255];
int Object_Checkbox3;
int Status_Checkbox3;
char Load_Checkbox3[255];
int Object_Checkbox4;
int Status_Checkbox4;
char Load_Checkbox4[255];
int Object_Checkbox5;
int Status_Checkbox5;
char Load_Checkbox5[255];
Object_Checkbox1 = CreateWindow(0, "BUTTON", "Текст1", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 50, 320, 20, Object_Group1, 0, 0, 0);
Object_Checkbox2 = CreateWindow(0, "BUTTON", "Текст2", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 70, 320, 20, Object_Group1, 0, 0, 0);
Object_Checkbox3 = CreateWindow(0, "BUTTON", "Текст3", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 90, 320, 20, Object_Group1, 0, 0, 0);
Object_Checkbox4 = CreateWindow(0, "BUTTON", "Текст4", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 110, 320, 20, Object_Group1, 0, 0, 0);
Object_Checkbox5 = CreateWindow(0, "BUTTON", "Текст5", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 130, 320, 20, Object_Group1, 0, 0, 0);
(Добавление)
007wan пишет: Object_Group1 Заменить на gethwnd(0) |
|
|
Zireael |
Отправлено: 18 Мая, 2019 - 10:00:16
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Как сократить?
Использовать массивы и соответственно циклы.
CODE:int Object_Checkbox1[5];
int Status_Checkbox1[5];
int Load_Checkbox1[5]; |
|
|
007wan |
Отправлено: 18 Мая, 2019 - 10:01:35
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Я только знаю, что нужно создать массив:
CODE:int Object_Checkbox[5];
Потом текст:
CODE:Text_Checkbox[5] = {"Текст1", "Текст2"...}
Затем
CODE:int Status_Checkbox[5];
char Load_Checkbox[5][255];
int Size_Checkbox[5] = {//цирфы через запятую}
А теперь:
Сделать через for, но не могу понять как сгруппировать координаты(размеры и расположение галочек)
(Добавление)
Тоесть не пойму как распределить заданные в переменной размеры и расположение через for. не прибавляя константу(постояяное число, например "+10")
(Добавление)
Пока вот, что вышло, но... не работает:
CODE:
int Object_Checkbox[5];
int Status_Checkbox[5];
string Text_Checkbox[5] =
{
"1",
"11",
"22",
"333",
"4444"
};
char Load_Checkbox[5][255];
int step = 0;
for (int a=0; a<sizearray(Text_Checkbox); a++)
{
Object_Checkbox[a] = CreateWindow(0, "BUTTON", Text_Checkbox[a], BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 50+step, 320, 20, Object_Group1, 0, 0, 0);
}
(Добавление)
Точнее вот:
но на последнюю галку текст не выводит
CODE:for (int a=0; a<sizearray(Text_Checkbox); a++)
{
Object_Checkbox[a] = CreateWindow(0, "BUTTON", Text_Checkbox[a], BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 50+step, 320, 20, Object_Group1, 0, 0, 0);
step = step+20;
}
(Добавление)
Не дает текст последней галочке (Отобразить)CODE:int Object_Checkbox[5];
int Status_Checkbox[5];
string Text_Checkbox[5] =
{
"/*+,/*/ì",
"првапвапвапвапвап",
"вапвапвап",
"1231231423",
"123123"
};
char Load_Checkbox[5][255];
int step = 0;
for (int a=0; a<sizearray(Object_Checkbox); a++)
{
Object_Checkbox[a] = CreateWindow(0, "BUTTON", Text_Checkbox[a], BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 50+step, 320, 20, Object_Group1, 0, 0, 0);
step = step+20;
}
|
|
|
Budni |
Отправлено: 21 Мая, 2019 - 17:51:07
|
Специалист
Покинул форум
Сообщений всего: 419
Дата рег-ции: Март 2018
Репутация: 2
|
Как можно сократить эту запись?
Собственно цвет объекта везде одинаковый, меняется лишь координаты поиска и место для клика.
CODE:loop (10) {
if (klik1()==1) sleep(20);
if (klik2()==1) sleep(20);
if (klik3()==1) sleep(20);
if (klik4()==1) sleep(20);
if (klik5()==1) sleep(20);
}
function klik1() {
int r=10;int color[1]={1248302};int kol[1]={4}; int x, y; int min=1;
int ko=findheapcolor(1, #color[0], #kol[0], sizearray(color), min, #x, #y, 10, 10, 10, 10, 0, 0, 100, 100, r, r, r, r, r, r, -1);
if(ko>0) mouse(LEFT,146, 294);return 1;
return 0;
}
function klik2() {
int r=10;int color[1]={1248302};int kol[1]={4}; int x, y; int min=1;
int ko=findheapcolor(1, #color[0], #kol[0], sizearray(color), min, #x, #y, 10, 10, 10, 10, 0, 0, 200, 200, r, r, r, r, r, r, -1);
if(ko>0) mouse(LEFT,115, 405);return 1;
return 0;
}
function klik3() {
int r=10;int color[1]={1248302};int kol[1]={4}; int x, y; int min=1;
int ko=findheapcolor(1, #color[0], #kol[0], sizearray(color), min, #x, #y, 10, 10, 10, 10, 0, 0, 300, 300, r, r, r, r, r, r, -1);
if(ko>0) mouse(LEFT,93, 227);return 1;
return 0;
}
function klik4() {
int r=10;int color[1]={1248302};int kol[1]={4}; int x, y; int min=1;
int ko=findheapcolor(1, #color[0], #kol[0], sizearray(color), min, #x, #y, 10, 10, 10, 10, 0, 0, 400, 400, r, r, r, r, r, r, -1);
if(ko>0) mouse(LEFT,510, 748);return 1;
return 0;
}
function klik5() {
int r=10;int color[1]={1248302};int kol[1]={4}; int x, y; int min=1;
int ko=findheapcolor(1, #color[0], #kol[0], sizearray(color), min, #x, #y, 10, 10, 10, 10, 0, 0, 500, 500, r, r, r, r, r, r, -1);
if(ko>0) mouse(LEFT,67, 835);return 1;
return 0;
} |
|
|
AdryV |
Отправлено: 21 Мая, 2019 - 18:02:38
|
Специалист
Покинул форум
Сообщений всего: 449
Дата рег-ции: Май 2016
Репутация: 11
|
чет типа
CODE:loop (10) {
if (klik1(100, 100, 146, 294)==1) sleep(20);
if (klik1(200, 200, 115, 405)==1) sleep(20);
if (klik1(300, 300, 93, 227)==1) sleep(20);
if (klik1(400, 400, 510, 748)==1) sleep(20);
if (klik1(500, 500, 67, 835)==1) sleep(20);
}
function klik1(int par, int par1, int xMouse, int yMouse) {
int r=10;int color[1]={1248302};int kol[1]={4}; int x, y; int min=1;
int ko=findheapcolor(1, #color[0], #kol[0], sizearray(color), min, #x, #y, 10, 10, 10, 10, 0, 0, par, par1, r, r, r, r, r, r, -1);
if(ko>0) mouse(LEFT,xMouse, yMouse);return 1;
return 0;
} (Отредактировано автором: 21 Мая, 2019 - 18:04:26) |
|
|
Zireael |
Отправлено: 22 Мая, 2019 - 01:35:30
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: if(ko>0) mouse(LEFT,xMouse, yMouse);return 1;
return 0;
Цитата: if(ko>0) {mouse(LEFT,xMouse, yMouse);return 1;}
return 0;
Иначе функция всегда будет возвращать 1, независимо от результата поиска. |
|
|
Budni |
Отправлено: 22 Мая, 2019 - 14:23:47
|
Специалист
Покинул форум
Сообщений всего: 419
Дата рег-ции: Март 2018
Репутация: 2
|
AdryV пишет: чет типа
CODE:loop (10) {
if (klik1(100, 100, 146, 294)==1) sleep(20);
if (klik1(200, 200, 115, 405)==1) sleep(20);
if (klik1(300, 300, 93, 227)==1) sleep(20);
if (klik1(400, 400, 510, 748)==1) sleep(20);
if (klik1(500, 500, 67, 835)==1) sleep(20);
}
function klik1(int par, int par1, int xMouse, int yMouse) {
int r=10;int color[1]={1248302};int kol[1]={4}; int x, y; int min=1;
int ko=findheapcolor(1, #color[0], #kol[0], sizearray(color), min, #x, #y, 10, 10, 10, 10, 0, 0, par, par1, r, r, r, r, r, r, -1);
if(ko>0) mouse(LEFT,xMouse, yMouse);return 1;
return 0;
}
Так что если координаты не 0,0,100,100 / 0,0,200,200 и т.д. а 24,54,100,100 / 43,23,200,200 ???
(Добавление)
Zireael пишет: Цитата:if(ko>0) mouse(LEFT,xMouse, yMouse);return 1;
return 0;
Цитата:if(ko>0) {mouse(LEFT,xMouse, yMouse);return 1;}
return 0;
Иначе функция всегда будет возвращать 1, независимо от результата поиска.
Тут у меня почему-то и без этих скобок работает. Возвращает как надо. |
|
|
|