Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Помощь чайнику (Матрица), Перемещение по матрице.
Shon435
сообщение 14.10.2016, 18:55
Сообщение #1


**

Neophyte
Сообщений: 19
Регистрация: 7.10.2016
Группа: Пользователи
Наличность: 0
Пользователь №: 18.146
Возраст: 20



Добрый день, нужна помощь в написании for . 5x5
C примера вики :
// пример 8 - кликаем по сетке 5x4 двигаясь снизу-вверх слева-направо
set #x1 0 // X левого нижнего угла
set #y1 40 // Y левого нижнего угла
set #dx 5 // шаг по оси X
set #dy -2 // шаг по оси Y ("-" значит вверх на экране)
set #sizeY 5 // число строк
set #sizeX 4 // число столбцов
set #x2 #x1 + #dx * (#sizeX - 1) // вычисляем другой угол
set #y2 #y1 + #dy * (#sizeY - 1)
for #x #x1 #x2 #dx // переход по столбцам
for #y #y1 #y2 #dy // переход по строкам
// left #x #y abs // для выполнения кликов - раскомментировать строку
log x = #x, y = #y
end_for // #y
end_for // #x
end_script



Тут перемещается один в право один в верх. Надо 5 в право , один в верх , 5 лева , один в верх и т.д

(IMG:http://s6.uploads.ru/t/bl2Lt.gif)

Перемещение по одной клетке.

Заранее Спасибо.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 15.10.2016, 2:44
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26706
Пользователь №: 16.971
Возраст: 29



код
Код
set linedelay 0
set #x1 500 // X левого нижнего угла
set #y1 500 // Y левого нижнего угла
set #dx -60 // шаг по оси X
set #dy -60 // шаг по оси Y ("-" значит вверх на экране)
set #sizeY 5 // число строк
set #sizeX 5 // число столбцов
set #x2 #x1 + #dx * (#sizeX - 1) // вычисляем другой угол
set #y2 #y1 + #dy * (#sizeY - 1)


set #z 1
set #xx1 #x1
set #dxx #dx
set #dx1 abs(#dx)

for #y #y1 #y2 #dy
    if  mod(#z 2) = 1
        set #tmp #x1
        set #x1 #x2
        set #x2 #tmp
        set #dx #dx1
    else
        set #x1 #xx1
        set #dx #dxx
        set #x2 #x1 + #dx * (#sizeX - 1)
    end_if
    for #x #x1 #x2 #dx
        move #x #y             // перемещение курсора
        wait 400               // ждать 0,4 сек
    end_for
    set #z #z + 1
end_for
end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Shon435
сообщение 15.10.2016, 2:59
Сообщение #3


**

Neophyte
Сообщений: 19
Регистрация: 7.10.2016
Группа: Пользователи
Наличность: 0
Пользователь №: 18.146
Возраст: 20



Цитата(cirus @ 15.10.2016, 2:44) *

код
Код
set linedelay 0
set #x1 500 // X левого нижнего угла
set #y1 500 // Y левого нижнего угла
set #dx -60 // шаг по оси X
set #dy -60 // шаг по оси Y ("-" значит вверх на экране)
set #sizeY 5 // число строк
set #sizeX 5 // число столбцов
set #x2 #x1 + #dx * (#sizeX - 1) // вычисляем другой угол
set #y2 #y1 + #dy * (#sizeY - 1)
set #z 1
set #xx1 #x1
set #dxx #dx
set #dx1 abs(#dx)

for #y #y1 #y2 #dy
    if  mod(#z 2) = 1
        set #tmp #x1
        set #x1 #x2
        set #x2 #tmp
        set #dx #dx1
    else
        set #x1 #xx1
        set #dx #dxx
        set #x2 #x1 + #dx * (#sizeX - 1)
    end_if
    for #x #x1 #x2 #dx
        move #x #y             // перемещение курсора
        wait 400               // ждать 0,4 сек
    end_for
    set #z #z + 1
end_for
end_script



Спасибо , работает 100%.

Если вам не сложно пояснить строки . Мне надо алгоритм на окно переделать без захвата мышки(abs).
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 15.10.2016, 3:16
Сообщение #4


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26706
Пользователь №: 16.971
Возраст: 29



Строки, которые можно менять и так прокомментированы.
Вместо move #x #y поставить то, что нужно, вот и всё

Если как-то поможет:
код
Код
set linedelay 0
set #x1 500       // X левого нижнего угла
set #y1 500       // Y левого нижнего угла
set #dx -60       // шаг по оси X
set #dy -60       // шаг по оси Y ("-" значит вверх на экране)
set #sizeY 5      // число строк
set #sizeX 5      // число столбцов
set #x2 #x1 + #dx * (#sizeX - 1)     // вычисляем другой угол
set #y2 #y1 + #dy * (#sizeY - 1)
set #z 1         // переменная счётчик
set #xx1 #x1     // X левого нижнего угла
set #dxx #dx     // шаг по оси X
set #dx1 abs(#dx)  // модуль шага по оси X

for #y #y1 #y2 #dy         // переход по строкам
    if  mod(#z 2) = 1      // если строка нечётная меняем направление (двигаться вправо)
        set #tmp #x1
        set #x1 #x2
        set #x2 #tmp
        set #dx #dx1
    else                   // иначе (строка чётная) двигаться влево
        set #x1 #xx1
        set #dx #dxx
        set #x2 #x1 + #dx * (#sizeX - 1)
    end_if
    for #x #x1 #x2 #dx         // переход по столбцам
        move #x #y             // перемещение курсора
        wait 400               // ждать 0,4 сек
    end_for
    set #z #z + 1              // переменная счётчик, для подсчёта строк
end_for
end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Shon435
сообщение 15.10.2016, 3:39
Сообщение #5


**

Neophyte
Сообщений: 19
Регистрация: 7.10.2016
Группа: Пользователи
Наличность: 0
Пользователь №: 18.146
Возраст: 20



Цитата(cirus @ 15.10.2016, 3:16) *

Строки, которые можно менять и так прокомментированы.
Вместо move #x #y поставить то, что нужно, вот и всё

Если как-то поможет:
код
Код
set linedelay 0
set #x1 500       // X левого нижнего угла
set #y1 500       // Y левого нижнего угла
set #dx -60       // шаг по оси X
set #dy -60       // шаг по оси Y ("-" значит вверх на экране)
set #sizeY 5      // число строк
set #sizeX 5      // число столбцов
set #x2 #x1 + #dx * (#sizeX - 1)     // вычисляем другой угол
set #y2 #y1 + #dy * (#sizeY - 1)
set #z 1         // переменная счётчик
set #xx1 #x1     // X левого нижнего угла
set #dxx #dx     // шаг по оси X
set #dx1 abs(#dx)  // модуль шага по оси X

for #y #y1 #y2 #dy         // переход по строкам
    if  mod(#z 2) = 1      // если строка нечётная меняем направление (двигаться вправо)
        set #tmp #x1
        set #x1 #x2
        set #x2 #tmp
        set #dx #dx1
    else                   // иначе (строка чётная) двигаться влево
        set #x1 #xx1
        set #dx #dxx
        set #x2 #x1 + #dx * (#sizeX - 1)
    end_if
    for #x #x1 #x2 #dx         // переход по столбцам
        move #x #y             // перемещение курсора
        wait 400               // ждать 0,4 сек
    end_for
    set #z #z + 1              // переменная счётчик, для подсчёта строк
end_for
end_script



Спасибо. Буду пробовать.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
AbsorbeR
сообщение 23.11.2016, 18:15
Сообщение #6


***

Novice
Сообщений: 59
Регистрация: 22.11.2016
Группа: Пользователи
Наличность: 0
Пользователь №: 18.203



Можно короче в раза 2.


--------------------
Выполняю скрипты на заказ.
e-mail: shk.inglory@gmail.com
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 24.4.2024, 0:52
Designed by Nickostyle