1 (изменено: Veranda, 2016-09-03 16:06:01)

Тема: AHK: Переобъявить значение переменной

Добрый день, уважаемые форумчане.
Столкнулся с проблемой:


f1::
Loop
{
Random, ms_sp, 0, 100 ; mouse speed
Tooltip, mouse speed: %ms_sp%
MouseMove, 100, 200, %ms_sp% ;
MouseMove, 800, 200, %ms_sp% ;
MouseMove, 800, 300, %ms_sp% ;
MouseMove, 100, 300, %ms_sp% ;
}
f2:: pause

Курсор передвигается по четырем координатам со случайной скоростью, но она задается один раз для всех четырех координат за цикл. Как сделать так, чтобы на каждое из четырех передвижений курсор получал новое значение переменной ms_sp и соответственно двигался с разной скоростью?

Чем дальше в лес - тем дальше в лес...

2

Re: AHK: Переобъявить значение переменной

Выполнять Random перед каждым из четырёх передвижений? Или в чём подвох?

3 (изменено: Veranda, 2016-09-03 18:07:14)

Re: AHK: Переобъявить значение переменной

Никакого подвоха нет). В оригинале код как раз так и написан:


f1::
Loop
{
Random, ms_sp, 0, 100 ; mouse speed
Random, ms_sp1, 0, 100 ; mouse speed
Random, ms_sp2, 0, 100 ; mouse speed
Random, ms_sp3, 0, 100 ; mouse speed
MouseMove, 100, 200, %ms_sp% ;
MouseMove, 800, 200, %ms_sp1% ;
MouseMove, 800, 300, %ms_sp2% ;
MouseMove, 100, 300, %ms_sp3% ;
}
f2:: pause

Просто вместо четырехкратного объявления random с одинаковыми параметрами, было бы удобнее один раз записать переменную и потом при каждом обращении к ней - получать заново сгенерированное значение. Да и с точки зрения написания и поддержки кода это было бы удобнее, как я думаю.

Чем дальше в лес - тем дальше в лес...

4

Re: AHK: Переобъявить значение переменной

Это делают с помощью функции. Что-нибудь вроде этого.


f1::
Loop
{
MouseMove, 100, 200, % Rand()
MouseMove, 800, 200, % Rand()
MouseMove, 800, 300, % Rand()
MouseMove, 100, 300, % Rand()
}
f2:: pause

Rand()
{
    Random, ms_sp, 0, 100
    Return ms_sp
}

5

Re: AHK: Переобъявить значение переменной

Спасибо. Это именно то, что мне было нужно!

Чем дальше в лес - тем дальше в лес...