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

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

1. Nikolo12 - 02 Октября, 2013 - 05:08:13 - перейти к сообщению
Поделитесь алгоритмом рисования круга в Паинте, пока попроще, Паинт в фокусе и развернут на весь экран. В школьные годы был такой язык что-то про черепаху, код примерно такой
CODE:

int x0=600, y0=400, t=0, x, y; // t просто для цикла

mousemove(x0, y0); //Переместить в центр Паинта
mousedown(LEFT); //Опустить перо
a: if (t<100) {
sleep(500);
x=x0+2*t*sin(t);
y=y0+2*t*cos(t);
sleep(100);
mousemove(x, y);
t++;
goto a;}
2. Kibor - 02 Октября, 2013 - 06:10:58 - перейти к сообщению
CODE:
double x0=600, y0=400, r=50;
double d=0.5;
double n=0;
double x1, y1;

mouse(LEFT, x0, y0); //Центр
sleep(200);
mousedown(LEFT, x0+r, y0); //Опустить перо

h: if (n<360)
{
x1=x0+(r*cos(n));
y1=y0+(r*sin(n));
mousemove(x1, y1);
n=n+d;
goto h;
}

mouseup(LEFT, x1, y1); //Поднять перо


Встретил баг в программе ... С умножением.. Позже поправлю. В таком виде будет работать. Пока надо умножение в скобки взять.
3. Nikolo12 - 02 Октября, 2013 - 11:51:45 - перейти к сообщению
От благодарю, на основе вашего алгоритма составил алгоритм обхода по спирали
CODE:
double x0=600, y0=400, r=0;
double d=5; //Точность отрисовки, чем меньше тем более точный круг
double n=0, m=0; //Переменные цикла
double x1, y1;

mouse(LEFT, x0, y0); //Центр
sleep(200);
mousedown(LEFT, x0, y0); //Опустить перо

b: if (m<10)
{
n=0;

h: if (n<360)
{
x1=x0+(r*cos(n));
y1=y0+(r*sin(n));
mousemove(x1, y1);
n=n+d;
r=r+0.2;
sleep(1);
goto h;
}

m=m+1;
goto b;
}
mouseup(LEFT, x1, y1); //Поднять перо

Думаю применить к поиску сагрившихся мобов в Lineage.
4. Kibor - 04 Октября, 2013 - 00:35:59 - перейти к сообщению
Устранил баг с умножением.
5. Zireael - 20 Ноября, 2017 - 19:20:03 - перейти к сообщению
 Цитата:
Устранил баг с умножением.

Так работает:
CODE:
double x, y;

for (int i=0; i<360; i++)
{
x = 500 + 200 * sin(i);
y = 500 + 200 * cos(i);
mousemove (x, y);
sleep (1);
}

А так нет:
CODE:
double x, y;

for (int i=0; i<360; i++)
{
x = 500 + sin(i) * 200;
y = 500 + cos(i) * 200;
mousemove (x, y);
sleep (1);
}
6. Kibor - 21 Ноября, 2017 - 05:15:08 - перейти к сообщению
Есть баг. Причину нашел. Устраню в следующем обновление.
7. Kibor - 21 Ноября, 2017 - 20:39:09 - перейти к сообщению
Устранил. Спасибо за баг.

Powered by ExBB FM 1.0 Final