konctantin777 |
Отправлено: 28 Ноября, 2023 - 14:57:49
|
Эксперт
Покинул форум
Сообщений всего: 1152
Дата рег-ции: Окт. 2017
Откуда: Архангельск
Репутация: 6
|
Код которым пользуюсь (Отобразить)int a[5]; //массив для сортировки
int mob[5]; // массив для очерёдности
if(Text_1=="6000")Text_1="4000";
if(flag_check0[7]==1)// если есть галка использовать, меняем им очки
{
Text_1="4001";
}
if(Text_2=="6000")Text_2="4000";
if(flag_check0[7]==1)// если есть галка использовать, меняем им очки
{
Text_2="4001";
}
if(Text_3=="6000")Text_3="4000";
if(flag_check0[7]==1)// если есть галка использовать, меняем им очки
{
Text_3="4001";
}
// меньше_числа
a[0]=formatsn(Text_1); a[1]=formatsn(Text_2); a[2]=formatsn(Text_3);
sort(#a[0], 3);//Сортировка массива по возрастанию
if(flag_combo0[4]==1)// Сначала большее число.
{
if(a[0]<formatsn(поле_меньше_числа)&&a[0]!=4000)mob[2]=a[0];// подходит по полю и не 4к
else mob[0]=0;
if(a[1]<formatsn(поле_меньше_числа)&&a[1]!=4000)mob[1]=a[1];// подходит по полю и не 4к
else mob[1]=0;
if(a[2]<formatsn(поле_меньше_числа)&&a[2]!=4000)mob[0]=a[2];// подходит по полю и не 4к
else mob[2]=0;
}
//===========
if(flag_combo0[4]==0)// Сначала меньшее число.
{
if(a[2]<formatsn(поле_меньше_числа)&&a[2]!=4000)mob[2]=a[2];// подходит по полю и не 4к
else mob[0]=0;
if(a[1]<formatsn(поле_меньше_числа)&&a[1]!=4000)mob[1]=a[1];// подходит по полю и не 4к
else mob[1]=0;
if(a[0]<formatsn(поле_меньше_числа)&&a[0]!=4000)mob[0]=a[0];// подходит по полю и не 4к
else mob[2]=0;
}
// не учитывать число
if(flag_combo0[5]==0)
{
for(i=0; i<3; i++)
{
if(mob==formatsn(Text_1))
{Х_клик=498; У_клик=270;goto клик; }
if(mob[i]==formatsn(Text_2))
{Х_клик=498; У_клик=420;goto клик; }
if(mob[i]==formatsn(Text_3))
{Х_клик=498; У_клик=570;goto клик; }
}
}
//==========================================================
//3 1й параметр+ больше числа
if(flag_combo0[5]==1) // 3 1й параметр
{
for(i=0; i<3; i++)
{
if(mob[i]==formatsn(Text_1)&&1й_моб>0)
{Х_клик=498; У_клик=270;//log("Меньше_"+поле_меньше_числа);
goto клик;
}
if(mob[i]==formatsn(Text_2)&&2й_моб>0)
{Х_клик=498; У_клик=420;//log("Меньше_"+поле_меньше_числа);
goto клик;
}
if(mob[i]==formatsn(Text_3)&&3й_моб>0)
{Х_клик=498; У_клик=570;//log("Меньше_"+поле_меньше_числа);
goto клик;
}
}
}
//=======================================================
if(flag_combo0[5]==2) // 3 1й параметр, потом 2 1й параметр
{
//=====
for(i=0; i<3; i++)
{
if(mob[i]==formatsn(Text_1)&&(1й_моб>0)) // 3 1й параметр
{Х_клик=498; У_клик=270;//log("Меньше_"+поле_меньше_числа);
goto клик;
}
if(mob[i]==formatsn(Text_2)&&(2й_моб>0))
{Х_клик=498; У_клик=420;//log("Меньше_"+поле_меньше_числа);
goto клик;
}
if(mob[i]==formatsn(Text_3)&&(3й_моб>0))
{Х_клик=498; У_клик=570;//log("Меньше_"+поле_меньше_числа);
goto клик;
}
}
//========
for(i=0; i<3; i++)
{
if(mob[i]==formatsn(Text_1)&&(1й_моб_1й_параметр_2>0)) // см. 2 1й параметр
{Х_клик=498; У_клик=270;//log("Меньше_"+поле_меньше_числа);
goto клик;
}
if(mob[i]==formatsn(Text_2)&&(2й_моб_1й_параметр_2>0))
{Х_клик=498; У_клик=420;//log("Меньше_"+поле_меньше_числа);
goto клик;
}
if(mob[i]==formatsn(Text_3)&&(3й_моб_1й_параметр_2>0))
{Х_клик=498; У_клик=570;//log("Меньше_"+поле_меньше_числа);
goto клик;
}
}
}
//=======================================================
if(flag_combo0[5]==3) // 1, 2, не учитывать
{
for(i=0; i<3; i++)
{
if(mob[i]==formatsn(Text_1)&&(1й_моб>0)) // см. 1й параметр 3
{Х_клик=498; У_клик=270;//log("Меньше_"+поле_меньше_числа);
goto клик;
}
if(mob[i]==formatsn(Text_2)&&(2й_моб>0))
{Х_клик=498; У_клик=420;//log("Меньше_"+поле_меньше_числа);
goto клик;
}
if(mob[i]==formatsn(Text_3)&&(3й_моб>0))
{Х_клик=498; У_клик=570;//log("Меньше_"+поле_меньше_числа);
goto клик;
}
}
//========
for(i=0; i<3; i++)
{
if(mob[i]==formatsn(Text_1)&&(1й_моб_1й_параметр_2>0)) // см. 1й параметр 2
{Х_клик=498; У_клик=270;//log("Меньше_"+поле_меньше_числа);
goto клик;
}
if(mob[i]==formatsn(Text_2)&&(2й_моб_1й_параметр_2>0))
{Х_клик=498; У_клик=420;//log("Меньше_"+поле_меньше_числа);
goto клик;
}
if(mob[i]==formatsn(Text_3)&&(3й_моб_1й_параметр_2>0))
{Х_клик=498; У_клик=570;//log("Меньше_"+поле_меньше_числа);
goto клик;
}
}
// не учитывать
for(i=0; i<3; i++)
{
if(mob[i]==formatsn(Text_1))
{Х_клик=498; У_клик=270;goto клик; }
if(mob[i]==formatsn(Text_2))
{Х_клик=498; У_клик=420;goto клик; }
if(mob[i]==formatsn(Text_3))
{Х_клик=498; У_клик=570;goto клик; }
}
}
Т.е. сначала проверяю 1й параметр, потом соотношу со 2м, потом перебираю, что кнопка совпадает с тем, что получилось. Потом так же в обратном порядке....
Сейчас стало надо больше кнопок и проверка, что кнопка вообще есть... (ну, это наверное, просто всем, с запасом, кнопкам присвоить "0")
[i](Добавление)
Каждой писать условие проверки, это в 2 раза длиннее будет...(Отредактировано автором: 28 Ноября, 2023 - 15:03:51) |
|
|
Zireael |
Отправлено: 29 Ноября, 2023 - 02:33:19
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Никто так и не понял что вы хотите сделать.
Цитата: Может можно как то записать координаты кнопки
В двухмерный массив можно записать всё что нужно.
Таблицу Excel представьте, двухмерный массив это по сути тоже самое.
Для примера:
CODE:int a[3][5]; // массив 3*5
// какие-то данные
a[0][0]=111; a[0][1]=222; a[0][2]=333; a[0][3]=444; a[0][4]=555;
a[1][0]=999; a[1][1]=888; a[1][2]=777; a[1][3]=666; a[1][4]=555;
a[2][0]=123; a[2][1]=456; a[2][2]=789; a[2][3]=987; a[2][4]=654;
for(int i=0; i<3; i++)
{
string tmp = "";
for(int j=0; j<5; j++)tmp = tmp + format(a[i][j]) +" ";
kiborlog(0, tmp, 0, 0, 300, 250);
}
kiborlog(1, "", 0, 0, 300, 250); |
|
|
Zireael |
Отправлено: 29 Ноября, 2023 - 11:20:57
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: 3-5000
3-4000
3-10
2-100
1-6000
1-200
В 3 и 4 столбце данные лишь для примера, они не используются, можно хранить координаты или что там нужно.
CODE:int a[6][4];
// какие-то данные
a[0][0] = 1; a[0][1] = 6000; a[0][2] = 100; a[0][3] = 111;
a[1][0] = 3; a[1][1] = 10; a[1][2] = 200; a[1][3] = 222;
a[2][0] = 3; a[2][1] = 5000; a[2][2] = 300; a[2][3] = 333;
a[3][0] = 1; a[3][1] = 200; a[3][2] = 400; a[3][3] = 444;
a[4][0] = 3; a[4][1] = 4000; a[4][2] = 500; a[4][3] = 555;
a[5][0] = 2; a[5][1] = 100; a[5][2] = 600; a[5][3] = 666;
int row = sizearray(a);
int col = sizearray(a[]);
int i, j;
string tmp;
kiborlog(0, "До сортировки:", 0, 0, 400, 400);
for(i=0; i<row; i++)
{
tmp = "^t";
for(j=0; j<col; j++)tmp = tmp + format(a[i][j]) +"^t";
kiborlog(0, tmp, 0, 0, 400, 400);
}
// сортировка по первым двум столбцам
// передаём указатель на массив, количество строк и столбцов в массиве
sort_array(#a[0][0], row, col);
kiborlog(0, "После сортировки:", 0, 0, 400, 400);
for(i=0; i<row; i++)
{
tmp = "^t";
for(j=0; j<col; j++)tmp = tmp + format(a[i][j]) +"^t";
kiborlog(0, tmp, 0, 0, 400, 400);
}
kiborlog(1, "", 0, 0, 400, 400);
function sort_array(int #m, int row, int column)
{
int max, max2, imax;
for(int i=0; i<row; i++)
{
max=m[i][0]; max2=-1; imax=i;
for(int j=i+1; j<row; j++)
{
if(m[j][0] > max || (m[j][0] == max && m[j][1] > max2))
{
max=m[j][0]; max2=m[j][1]; imax = j;
}
}
for(int k=0; k<column; k++)
{
int tmp = m[i][k]; m[i][k]=m[imax][k]; m[imax][k]=tmp;
}
}
} |
|
|
|