Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (2): « 1 [2]   

> Описание: массив
Zireael
Отправлено: 05 Ноября, 2020 - 14:13:46
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
есть картинка(для просмотра ссылки Вам необходимо авторизоваться) как записать в файл массив вида

code (Отобразить)

findheapcolor можно заменить на findimage.
 
 Top
stasrus
Отправлено: 05 Ноября, 2020 - 14:54:47
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 62
Дата рег-ции: Сент. 2020  
Репутация: -1




Zireael , Большое спасибо, очень помогает в освоении.

Если будет время, не могли бы вы пояснить чуть подробнее, не совсем понятно как это все работает.

например вот это место
CODE:

// массив для хранения позиций
new int array[row][column];
initialarray(#array[0][0], 0);


Из справки:
 Цитата:
initialarray позволяет заполнить массив одинаковыми данными.

у нас же не одинаковые данные? может же быть много разных изображений
Да и с new не понятно для чего здесь?
 Цитата:
new - Динамичное выделение памяти


Дальше по функциям вроде могу примерно понять, но вот по логике скрипта совсем не понятно

CODE:

//поиск объектов
for(i=0; i<sizearray(colors); i++)
{
color[0]=colors[i];
count=findheapcolor(sizearray(PosX),#color[0],#kol[0],1,1,#PosX[0],#PosY[0], 100,50,100,50,coord[0],coord[1],coord[2],coord[3], r,r,r,r,r,r,-1);
//messagebox("Найдено: "+format(count));
if(count)
{
for(j=0; j<count; j++)
{
//mousemove(coord[0]+PosX[j], coord[1]+PosY[j]); sleep(500);
int positionX = PosX[j] / width_section;
int positionY = PosY[j] / height_section;
//messagebox(format(positionX)+" "+format(positionY));
array[positionY][positionX] = i+1;
}
}
else messagebox("Не найдено");
}

// записать массив в файл
if(fopen(path, "w"))
{
for(i=0; i<row; i++)
{
for(j=0; j<column; j++)fwrite(array[i][j]);
fwrite(ENDL);
}
fclose();
start(path);
}


Где место которое присваивает изображению цифру 1 или 2?
Если будет возможность прокомментируйте каждую строку чтобы понять что вообще происходит . не хочется просто скопировать кусок чужого кода, интересно добраться до сути.
чтобы вы понимали насколько это все не просто, свою часть кода я писал почти 6 часов. но там немного больше было кода, еще нужно было открывать изображения по массиву. и постоянно чтото не работало
(Добавление)
Ув Zireael , я там в личку отписал по другому вопросу

(Отредактировано автором: 05 Ноября, 2020 - 15:01:22)

 
 Top
ivantu
Отправлено: 05 Ноября, 2020 - 15:47:07
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013  
Репутация: 14




 stasrus пишет:
массив одинаковыми данными.

Имеется ввиду данными одного типа к примеру int
New динамический массив который имеет приставку new*, т.е. массив может увеличиваться в процессе.
 stasrus пишет:
Где место которое присваивает изображению цифру 1 или 2?

Тут поиск цвета, а не картинок, т.е. в квадрате к примеру пикселей красного цвета 200, а в круге 180, по этому принципу идет отслеживание обьектов.
 stasrus пишет:
count=findheapcolor(sizearray(PosX),#color[0],#kol[0],1,1,#PosX[0],#PosY[0], 100,50,100,50,coord[0],coord[1],coord[2],coord[3], r,r,r,r,r,r,-1);
 
 Top
Zireael
Отправлено: 06 Ноября, 2020 - 01:16:35
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
initialarray позволяет заполнить массив одинаковыми данными.
у нас же не одинаковые данные? может же быть много разных изображений

Чтобы изначально заполнить какими-то данными. Можно не заполнять, если какой-то объект не найдется запишет в файл вместо 0 что-то вроде этого -842150451.
 Цитата:
Да и с new не понятно для чего здесь?

Чтобы размер массива задать перемеными.
 Цитата:
т.е. в квадрате к примеру пикселей красного цвета 200, а в круге 180, по этому принципу идет отслеживание обьектов.

Нет. Просто поиск по цвету, количество тут незачем учитывать.
 Цитата:
Если будет возможность прокомментируйте каждую строку чтобы понять что вообще происходит

CODE:
//поиск объектов
for(i=0; i<sizearray(colors); i++) // цикл для всех цветов в массиве
{
color[0]=colors[i]; // присвоить переменной цвет, который будем искать
count=findheapcolor(sizearray(PosX),#color[0],#kol[0],1,1,#PosX[0],#PosY[0], 100,50,100,50,coord[0],coord[1],coord[2],coord[3], r,r,r,r,r,r,-1);
//messagebox("Найдено: "+format(count));
if(count) // если объект найден
{
for(j=0; j<count; j++) // цикл для всех найденных объектов
{
//mousemove(coord[0]+PosX[j], coord[1]+PosY[j]); sleep(500);
int positionX = PosX[j] / width_section; // позиция объекта исходя из его позиции на поле и ширины столбца
int positionY = PosY[j] / height_section; // позиция объекта исходя из его позиции на поле и высоты строки
//messagebox(format(positionX)+" "+format(positionY));
array[positionY][positionX] = i+1; // записать в массив цифру
}
}
else messagebox("Не найдено");
}

Допустим, имеется поле в 3 столбца шириной 120 пикселей. Значит ширина одного столбца 120 / 3 = 40 пикселей. Если объект нашёлся по оси X в координатах от 0 до 40 значит он в первом столбце, от 40 до 80 во втором, от 80 до 120 в третьем. По Y тоже самое.
 
 Top
stasrus
Отправлено: 06 Ноября, 2020 - 13:43:06
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 62
Дата рег-ции: Сент. 2020  
Репутация: -1




Zireael , ivantu , Большое спасибо за объяснение.
Это как crackme, ищу легкие игры для самообучения, но при всей их кажущейся простоте в итоге все оказывается далеко не так просто.

Вот эта игра была(для просмотра ссылки Вам необходимо авторизоваться) но придется ее оставить, все слишком сложно изза того что изображения все закрываются
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 3 (гостей: 3, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by