Что нового

[Массивы] Присвоение координатам значений с определенным интервалом

defens

Знающий
Сообщения
89
Репутация
5
Подскажите как присвоить координатам значения.
Суть такова есть 50 координат, надо чтоб когда в Input ввел определенную цифру то произошел клик соответствующей клик в той координате что закреплена за этой цифрой.

Первой координате соответствуют эти цифры: 1|51|101|151|201|251|301|351|401…..бесконечность
Второй координате соответствуют эти цифры: 2|52|102|152|202|252|302|352|402…..бесконечность
Третьей координате соответствуют эти цифры: 3|53|103|153|203|253|303|353|403…..бесконечность
~~~
Сорок восьмой координате соответствуют эти цифры: 48|98|148|198|248|298|348|398|448…..бесконечность
Сорок девятой координате соответствуют эти цифры: 49|99|149|199|249|299|349|399|449…..бесконечность
Пятидесятой координате соответствуют эти цифры: 50|100|150|200|250|300|350|400|450…..бесконечность

Вообще интервал между цифрами что нужно присвоить координаты равен 50
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
defens,
Если я Вас правильно понял, то попробуйте примерно так.
Код:
Global $aCoord[51] = [50], $iCoord

ConsoleWrite('начальные координаты:' & @LF)
For $i = 1 To $aCoord[0]
	ConsoleWrite($i & @LF)
Next
ConsoleWrite('-------------------------' & @LF)
For $i = 1 To 1000
	$iRand = Random(-1, 55)
	$iRand = Int($iRand)
	Switch $iRand
		Case 1 To $aCoord[0]
			;OK
		Case Else
			ConsoleWrite('некорректный номер' & @TAB & $iRand & @LF)
			ContinueLoop
	EndSwitch
	$iCoord = $iRand + 50 * $aCoord[$iRand]
	ConsoleWrite($iRand & @TAB & $aCoord[$iRand] & @TAB & $iCoord & @LF)
	$aCoord[$iRand] += 1
Next
 
Автор
D

defens

Знающий
Сообщения
89
Репутация
5
возможно вы и правильно поняли, но я вот точно не понял
вот сделал для теста это, надо при вводе цифр чтоб был клик, соответствующей ей.

Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Opt('MouseCoordMode',2)


#Region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("Form1", 616, 439, 192, 124)
$Input1 = GUICtrlCreateInput("ID БОЙЦА", 24, 24, 121, 21)
$Button1 = GUICtrlCreateButton("ФАС", 232, 24, 75, 25)
$Label1 = GUICtrlCreateLabel("кор.1", 45, 130, 36, 17)
$Label2 = GUICtrlCreateLabel("кор.2", 45, 230, 36, 17)
$Label3 = GUICtrlCreateLabel("кор.3", 45, 330, 36, 17)
$Label4 = GUICtrlCreateLabel("кор.4", 180, 130, 36, 17)
$Label5 = GUICtrlCreateLabel("кор.5", 180, 230, 36, 17)
$Label6 = GUICtrlCreateLabel("кор.6", 180, 330, 36, 17)
$Label7 = GUICtrlCreateLabel("кор.7", 340, 130, 36, 17)
$Label8 = GUICtrlCreateLabel("кор.8", 340, 230, 36, 17)
$Label9 = GUICtrlCreateLabel("кор.9", 340, 330, 36, 17)
$Label10 = GUICtrlCreateLabel("кор.10", 497, 130, 42, 17)
$Label11 = GUICtrlCreateLabel("кор.11", 495, 246, 42, 17)
$Label12 = GUICtrlCreateLabel("кор.12", 486, 340, 42, 17)
$Group1 = GUICtrlCreateGroup("ЭТО ВСЕ В ИГРЕ", 24, 88, 569, 337)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            _Input()
    EndSwitch
WEnd

Func _Input()

MouseClick("primary", 45, 130, 1)

EndFunc   ;==>_Input




Добавлено:
Сообщение автоматически объединено:

и пусть будет не бесконечно, а так:

Первой координате соответствуют эти цифры: 1|51|101|151|201|251|301|351|401…..99953
Второй координате соответствуют эти цифры: 2|52|102|152|202|252|302|352|402…..99953
Третьей координате соответствуют эти цифры: 3|53|103|153|203|253|303|353|403…..99953
~~~
Сорок восьмой координате соответствуют эти цифры: 48|98|148|198|248|298|348|398|448…..99998
Сорок девятой координате соответствуют эти цифры: 49|99|149|199|249|299|349|399|449…..99999
Пятидесятой координате соответствуют эти цифры: 50|100|150|200|250|300|350|400|450…..100000


Добавлено:
Сообщение автоматически объединено:

надо чтоб в Input при записи 1,51,101...клик был в одном и том же месте
а при 2,52,102....был в другом месте, но для этих цифр так же на одну точку

и таких 50 координат постоянных:
MouseClick("primary", 0, 100, 1)
MouseClick("primary", 100, 500, 1)
MouseClick("primary", 200, 500, 1)
и тд.
 

xaker

Знающий
Сообщения
52
Репутация
16
можно использовать _GetCoord1 или _GetCoord2, сделал для разнообразия )
Код:
#Include <EditConstants.au3>
#include <GUIConstantsEx.au3>

Global $aCoord[13][2] = [[12, 0],[ 45, 130],[ 45, 230],[ 45, 330],[ 180, 130],[ 180, 230],[ 180, 330],[ 340, 130],[ 340, 230],[ 340, 330],[ 497, 130],[ 497, 230],[ 497, 330]]

$Form1_1 = GUICreate("Form1", 616, 439, 0, 0)
$Input1 = GUICtrlCreateInput("1", 24, 24, 121, 21, $ES_NUMBER)
$Button1 = GUICtrlCreateButton("Button1", 232, 24, 75, 25)
$Label1 = GUICtrlCreateLabel("кор.1", 45, 130, 36, 17)
$Label2 = GUICtrlCreateLabel("кор.2", 45, 230, 36, 17)
$Label3 = GUICtrlCreateLabel("кор.3", 45, 330, 36, 17)
$Label4 = GUICtrlCreateLabel("кор.4", 180, 130, 36, 17)
$Label5 = GUICtrlCreateLabel("кор.5", 180, 230, 36, 17)
$Label6 = GUICtrlCreateLabel("кор.6", 180, 330, 36, 17)
$Label7 = GUICtrlCreateLabel("кор.7", 340, 130, 36, 17)
$Label8 = GUICtrlCreateLabel("кор.8", 340, 230, 36, 17)
$Label9 = GUICtrlCreateLabel("кор.9", 340, 330, 36, 17)
$Label10 = GUICtrlCreateLabel("кор.10", 497, 130, 42, 17)
$Label11 = GUICtrlCreateLabel("кор.11", 497, 230, 42, 17)
$Label12 = GUICtrlCreateLabel("кор.12", 497, 330, 42, 17)
$Group1 = GUICtrlCreateGroup("ЭТО ВСЕ В ИГРЕ", 24, 88, 569, 337)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Opt("MouseCoordMode", 2)
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
			_Input()
    EndSwitch
WEnd

Func _Input()
	Local $var = GUICtrlRead( $Input1 )
	$var = _GetCoord2( $var )
	MouseMove( $aCoord[$var][0]+10, $aCoord[$var][1]+10)
EndFunc   ;==>_Input

Func _GetCoord1( $iInput )
	While 1
		If $iInput < 51 Then Return $iInput
		$iInput -= 50
	WEnd
EndFunc

Func _GetCoord2( $iInput )
	$iInput = StringRight ( $iInput, 2 )
	If $iInput < 51 Then Return $iInput
	Return $iInput - 50
EndFunc
 
Автор
D

defens

Знающий
Сообщения
89
Репутация
5
xaker

и он только для этих цифр, мне надо для разных цифр, но в определенном для них месте
и эти цифры объединяющийся в группу, и данная группа кликает только в одной координате всегда
 

xaker

Знающий
Сообщения
52
Репутация
16
массив будет 51 строка , 2 колонки и неважно какую цифру ввести
и он только для этих цифр
для каких этих?
и эти цифры объединяющийся в группу, и данная группа кликает только в одной координате всегда
я так и сделал, если ввести 1 , 51, 101 то мышь станет на первую координату.
 
Автор
D

defens

Знающий
Сообщения
89
Репутация
5
а если написать 13 то где?


Добавлено:
Сообщение автоматически объединено:

а это просто у вас до 12 сделано, понял
я просто до 13 дошел и другие не вводил
тогда это то что надо :ok:
и эта функция _GetCoord1, что делает
 

xaker

Знающий
Сообщения
52
Репутация
16
ну в примере я сделал только на 12, до 50 увеличить массив не проблема.
 
Автор
D

defens

Знающий
Сообщения
89
Репутация
5
теперь то понял это, меня смутило что на 13 он вылетел, до 50 увеличу, еще пока не понял как вам это удалось, но работает на все сто
 

xaker

Знающий
Сообщения
52
Репутация
16
_GetCoord1 и _GetCoord2 делают одно и тоже, из большой цифры делают маленькую от 1 до 50, можно оставить которая больше нравится, _GetCoord2 работает немного быстрее.
 
Автор
D

defens

Знающий
Сообщения
89
Репутация
5
значит в массив забиваю только координаты, я то думал обратное, туда цифры.
огромное Спасибо :ok:


Добавлено:
Сообщение автоматически объединено:

xaker

скажи, а Opt("MouseCoordMode", 2) для чего в средину скрипта перенес?
я считал AutoItSetOption должны быть всегда вначале, если их изменения не требуются во время работы скрипта, тогда от разных требований менял их
 

xaker

Знающий
Сообщения
52
Репутация
16
ни для чего, можно и в начало перенести.
 
Верх