Quote:
Originally Posted by Belur
Okay. Und wofür sind die genau nützlich? Bze was haben Arrays genau mit nem Bots zu tun und wo sind sie da enthalten? O.o
|
naja mit arrays kannst du ganz einfach gesagt ganz viele sachen in einer Variablen speichern :P Der vorteil hierbei sollte klar sein.
wenn du 5 variablen hast, musst du alle einzeln ansprechen. hast du aber ein 1diemnsionales array mit 5 werten:
so kannst du diese ja per
Code:
$array[0] = ...
$array[1] = ...
$array[2] = ...
$array[3] = ...
$array[4] = ...
ansprechen. (ganz wichtig, der index beginnt in autoit immer bei 0!)
wie du siehst ist hierbei jeweils nur der index unterschiedlich.
dh du kannst das ganze sehr gut in schleifen abarbeiten:
Code:
For $i=0 To 4
$array[$i] = ...
Next
hier mag das keinen allzugroßen unterschied machen, aber stell dir mal vor du hast jetzt 1000 oder mehr verschiedene sachen, die du so verwalten kannst/willst
ob du da jetzt jede variable einzeiln abfragst/beschriebst, oder das ganze in einer 3 zeilen schleife erledigst, macht das schon einen unterschied von 1000 zeilen code.
hier vielleicht nochmal ein kleines beispiel um zu zeigen das arrays noch andere vorteile haben...
stell dir vor du willst ein ganz einfaches 1-dimensionales "spiel" erstellen.
ums wirklich leicht verständlich zu halten stell dir vor du hast 3 räume, die alle hintereinander liegen.
und es gibt nur eine funktion, mit der du einen raum weiter gehst.
das ganze könntest du ohne arrays, mit ihren leicht handlebaren index werten ja so realisieren:
Code:
; definiere dir 3 räume, die hintereinander angeordnet sind
; lege eine variable fest, für den aktuellen standort
; lege eine variable fest, die anzeigt, ob man weiter gehen will
Dim $raum1='Raum1', $raum2='Raum2', $raum3='Raum3', $aktuell=$raum1, $gehe_weiter=False
; lege einen hotkey an für das weiter gehen (hier rechte pfeiltaste)
HotKeySet('{right}', 'weita')
While 1
ToolTip('Du bist jetzt in '&$aktuell)
; gehe einen raum weiter
; nach raum 3 ist man wieda in raum1
; nach dem weitergehen, weitergehen wieder auf falsch setzen
If $aktuell=$raum1 And $gehe_weiter Then
$aktuell=$raum2
$gehe_weiter=False
ElseIf $aktuell=$raum2 And $gehe_weiter Then
$aktuell=$raum3
$gehe_weiter=False
ElseIf $aktuell=$raum3 And $gehe_weiter Then
$aktuell=$raum1
$gehe_weiter=False
EndIf
Sleep(10)
WEnd
Func weita()
; sage dem script, das es weiter gehen soll
$gehe_weiter = True
EndFunc
und hier nochmal zum vergleich das ganze mit einem $raum[3] array gelöst:
Code:
Dim $raum[3] = ['Raum1', 'Raum2', 'Raum3'], $aktuell=0, $gehe_weiter=False
HotKeySet('{right}', 'weita')
While 1
If $gehe_weiter Then
$aktuell+=1
$gehe_weiter=False
If $aktuell>2 Then $aktuell=0
EndIf
ToolTip('Du bist jetzt in '&$raum[$aktuell])
WEnd
Func weita()
; sage dem script, das es weiter gehen soll
$gehe_weiter = True
EndFunc
wie du siehst, muss bei dem arbeiten mit arrays nicht eine variable abgefragt werden. es kann direkt nur mit den index werten gearbeitet werden.
der einzig wichtige punkt ist, das man aufpasst, das man nicht aus dem array hinaus springt.
wenn du das "spiel" jetzt auf 2 dimensionen erweitern würdest (also das du zb vorwärts, rückwärts, nach rechts und nach links gehen kannst.
mit einem 2d array wären das genau eine zeile mehr.
ohne arrays, hätte man aus n zeilen code n^2 zeilen code gemacht..
für jede dimension die man nun hinzufügt, würde ohne arrays die die potenz immer um eins steigen, und mit arrays, die anzahl der zeile um eine steigen.