Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Скрипт создания анимации

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

11. Andrew - 14 Августа, 2013 - 17:39:59 - перейти к сообщению
 Kibor пишет:
но это вообще то не правильно.

Работает-Хорошо, не работает-переделываю Радость
12. Kibor - 14 Августа, 2013 - 17:55:26 - перейти к сообщению
Ищется любое изменение при нулях... без определения размерности. Ну пусть работает...
13. Andrew - 14 Августа, 2013 - 19:18:04 - перейти к сообщению
Простите, ошибся Радость
(Добавление)
Нет. Не работает.
Можно ли другим способом указать на количество всех очагов экрана, этот выдает ошибку идентификации указателей.
CODE:
int col, xe, ye;
getdisplay(col, xe, ye);
int ox=xe/50;
int oy=ye/33;
int pa=ox*oy; // Количество очагов динамики
int x[pa];
int y[pa];
int de=pa/3; // 1/3 очагов динамики

//=======================================

activate(w);
a:
finddynamic(0, #x[0], #y[0], 0, 0, 0, 0, 0, 0, xe, ye, w);
savescreen("C:\savescreen\screen\screen"+format(n)+".bmp", 0, 0, 400, 300, w);
sleep(500);
key(DOWN);
sleep(500);
din=finddynamic(pa, #x[0], #y[0], 0, 0, 0, 0, 0, 0, xe, ye, w);
if (din>de)
{n++;goto a;}
14. Kibor - 14 Августа, 2013 - 23:03:11 - перейти к сообщению
 Andrew пишет:
выдает ошибку идентификации указателей

Тут вообще не объявлен указатель win w.





 Andrew пишет:
int x[pa];
int y[pa];


Динамически память в Кибор не выделяется. Это не правильная запись.
Когда выделяется память надо указывать только числа.
Надо рассчитать сколько максимум может понадобится памяти и ее выделять столько.

Ошибка синтаксиса.



 Andrew пишет:
int ox=xe/50;
int oy=ye/33;


При делениях чисел лучше использовать double. Использование int может привести к большим погрешностям из за отбросов остатков в каждом выражение.

Все же я рекомендовал бы во втором вызове fiddynamic использовать не нули, а хоть бы такие параметры: 1, 1, 3, 3
15. Andrew - 14 Августа, 2013 - 23:12:01 - перейти к сообщению
 Kibor пишет:
Все же я рекомендовал бы во втором вызове fiddynamic использовать не нули, а хоть бы такие параметры: 1, 1, 3, 3

Хорошо, исправил.
 Kibor пишет:
Ошибка синтаксиса.

Нельзя было бы указать дробное количест вопамяти для функции финддинамик, я потому и стпрашивал Вас об округлении десятичных. Придется выделят максимальное значение памяти. Не знаю как я посчитал но для монитора 1920 X 1080 точек получил память
CODE:

int x[2145];
int y[2145];

Правильно ведь? А?!
16. Kibor - 14 Августа, 2013 - 23:24:01 - перейти к сообщению
1920 X 1080 = 2073600
Всего 2073600 пикселей. Каждый имеет пару xy
int x[2073600];
int y[2073600];

Объявление одного массива int на 2073600 элементов увеличит использование памяти программой на 8 метров. Не критично.
(Добавление)
Кстати, использование не нулей даст тот же эффект при меньшем количестве очагов.
17. Andrew - 14 Августа, 2013 - 23:50:28 - перейти к сообщению
 Kibor пишет:
1920 X 1080 = 2073600
Всего 2073600 пикселей. Каждый имеет пару xy
int x[2073600];
int y[2073600];

Думал в массив нужно указывать количество очагов, 50х33
18. Kibor - 14 Августа, 2013 - 23:54:56 - перейти к сообщению
 Andrew пишет:
50х33
Откуда взялись эти параметры?
19. Andrew - 14 Августа, 2013 - 23:58:53 - перейти к сообщению
Kibor , ВЫ очень хорошо описали эту функцию мне, и по приложенному изображению я взял эти данные.
Тут.
20. Kibor - 15 Августа, 2013 - 00:09:46 - перейти к сообщению
Ну так там указан объем 50 и 33. При чем тут это?
Это как будто поделить площадь экрана на прямоугольники 50 на 33. Даже если так то получится количество объемов по X 35 и 33 по Y. Всего 1155
В том случае можно выделить и
int x[1155];
int y[1155];

В нашем случае если нули то надо выделять на каждый пиксель, если 1, 1, 3, 3 то объемы 3 на 3. Можно выделять
(1920/3)*(1080/3) = 230400
int x[230400];
int y[230400];

Но лучше выделить немного больше...

Powered by ExBB FM 1.0 Final