Author Topic: проблема со скриптом.  (Read 1733 times)

0 Members and 1 Guest are viewing this topic.

щагорох

  • Зашел в гости
  • *
  • Posts: 1
    • View Profile
проблема со скриптом.
« on: July 09, 2017, 02:24:55 PM »
Здравствуйте.Как сделать чтобы мышь ходила по кругу?Очень важно!

Атеист

  • Guest
Re: проблема со скриптом.
« Reply #1 on: July 09, 2017, 05:41:13 PM »
Занятная штука получилась.  :D  Добавил примитивную регулировку скорости, можно все нужные параметры вывести на горячие клавиши, если надо.
Скрипт не идеален конечно, это видно на малой скорости вращения курсора, или если рисовать круги в Paint'е, но окружность рисует правильную.

Code: (clickermann) [Select]
WAITMS(500)

$delay = 5 // задержка между перемещениями курсора
$step = 10 // шаг смещения курсора
$radius = 100 // радиус траектории курсора

$center_x = INT($_xmax / 2) // координаты начального положения курсора (центр круга)
$center_y = INT($_ymax / 2) // в данном примере - центр монитора

$sqrt = SQRT($radius)
$x = $center_x
$y = $center_y - $radius

MOVE($x, $y)
WAITMS($delay)

SUB(Регулировка_скорости) // Клавиши "+" и "-"
   IF( (ISKEYDOWN(109) = 1) & ($delay < 100) )
      INC($delay, 1)
   END_IF
   IF( (ISKEYDOWN(107) = 1) & ($delay > 0) )
      INC($delay, -1)
   END_IF
END_SUB

//--------------------------------

WHILE(1)
   Регулировка_скорости()
   WHILE($x < $center_x + $radius)
      INC($x, $step)
      $y = INT($center_y - SQRT($radius * $radius - ($center_x - $x) * ($center_x - $x)))
      MOVE($x, $y)
      WAITMS($delay)
   END_CYC
   WHILE($x > $center_x)
      INC($x, -$step)
      $y = INT($center_y + SQRT($radius * $radius - ($center_x - $x) * ($center_x - $x)))
      MOVE($x, $y)
      WAITMS($delay)
   END_CYC
   WHILE($x > $center_x - $radius)
      INC($x, -$step)
      $y = INT($center_y + SQRT($radius * $radius - ($center_x - $x) * ($center_x - $x)))
      MOVE($x, $y)
      WAITMS($delay)
   END_CYC
   WHILE($x < $center_x)
      INC($x, $step)
      $y = INT($center_y - SQRT($radius * $radius - ($center_x - $x) * ($center_x - $x)))
      MOVE($x, $y)
      WAITMS($delay)
   END_CYC
END_CYC

//HALT

UPD: Окружность все таки не совсем правильная получается при рисовании, даже если сделать шаг равным единице.
Первый блин как всегда - комом.  :)
« Last Edit: July 09, 2017, 05:58:07 PM by Атеист »

Vir

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Re: проблема со скриптом.
« Reply #2 on: July 09, 2017, 11:19:54 PM »
Зачем так извращаться. x = sinA, y = cosA.
Псевдокод:
Code: [Select]
center_x = 500
center_y = 500
radius = 100
for i = 1, 360
    x = center_x + sin(i * 3.14 / 180) * radius
    y = center_y + cos(i * 3.14 / 180)  * radius
    move (x, y)
end
Нарисует круг.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: проблема со скриптом.
« Reply #3 on: July 10, 2017, 03:21:45 PM »
Давно уже все написано
Code: (clickermann) [Select]
$r = 4 // шаг
$r2 = 300 // Радиус

$x0 = 500 // координата центра
$y0 = 500
WHILE(1)
   FOR($a=0,$a<360+$r,$r)
      MOVE(ROUND($x0+$r2*cos($a),0),ROUND($y0+$r2*sin($a),0))
      WAITMS(5) // задержка в мс (отвечает за скорость вращения)
   END_CYC
END_CYC

Атеист

  • Guest
Re: проблема со скриптом.
« Reply #4 on: July 10, 2017, 04:34:50 PM »
Вот так! ;D Собрались два джентльмена пописать написать скрипт... :D

Смотрим видео! :))

Ну как тут не вспомнить слова Михаила Круга из песни "После третьей ходки"?
"Кулачищи у Андрюшки не пролазили в кадушку, Дрюня беспредел не допускал." :) ;D :)