Что нового

Написание собственного класса

jilexandr

Знающий
Сообщения
129
Репутация
6
С объктами работать удобней и это факт )

У меня есть бот для автоматизации некоторых действий в игре. Очень часто нужно работать с координатами, и на данный моммент для хранения координаты у меня есть массив с ключами 0,1 для x, y координаты соответственно.

Но я хочу передать данные в конструктор, вернуть объект и использовать геттеры для доступа к свойствам) Такое возможно?

Как-то так:

Код:
#import <Coordinate.au3>

$currentPosition = newObject("Coordinate", [150, 330]);
$currentPosition.getX();
 

joiner

Модератор
Локальный модератор
Сообщения
3,570
Репутация
632
может так?
Код:
$struct = DllStructCreate('int x;int y')
;помещаем данные в структуру
$struct.x = 100
$struct.y = 200
;--------------------------
;получаем данные из структуры
ConsoleWrite($struct.x & '   ' & $struct.y & @LF)
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
jilexandr
Все зависит от сложностей вашего кода, но я бы порекомендовал как наиболее простой и быстродействующий вариант:

Код:
Global Enum $_Coord_X, $_Coord_Y, $_CoordUB

Func _Coord_Create($x = 0, $y = 0)
	Local $oCoord[$_CoordUB + 1]
	; ---
	$oCoord[$_Coord_X] = $x
	$oCoord[$_Coord_Y] = $y
	; -
	Return $oCoord
EndFunc

Func _Coord_Get(ByRef $oCoord, ByRef $x, ByRef $y)
	$x = $oCoord[$_Coord_X]
	$y = $oCoord[$_Coord_Y]
EndFunc

; #####################################################3

Local $oCoord = _Coord_Create(50, 100)

Local $x, $y
_Coord_Get($oCoord, $x, $y)
ConsoleWrite( $x & ' ' & $y & @CRLF)

ConsoleWrite( $oCoord[$_Coord_X] & ' ' & $oCoord[$_Coord_Y] & @CRLF)
 
Верх