Hallo
Ist es möglich fast Identische Werte einer Variable zu entfernen ?
Diese Koordinaten stehen in der Variable:
1244,238
1244,239
1244,240
268,342
268,343
268,344
348,526
348,527
348,528
444,478
444,479
444,480
Es sind ja fast die gleichen Positionen, davon sollten jetzt 2 Zeilen gelöscht werden
Die Koordinaten sind natürlich immer andere, aber variieren um +- 2 Pixel
Variable sortieren
Moderator: jNizM
Re: Variable sortieren
hier mein vorschlag:
Hubert
Code: Select all
alt =
(
1244,238
1244,239
1244,240
268,342
268,343
268,344
348,526
348,527
348,528
444,478
444,479
444,480
)
vor1 =
vor2 =
loop, parse, alt, `n
{
stringsplit, lfd, a_loopfield, `,
if (lfd1 <> vor1) or (lfd2 <> vor2 + 1)
neu .= a_loopfield "`n"
vor1 := lfd1
vor2 := lfd2
}
msgbox, % neu
Re: Variable sortieren
Moin,
es wäre schon gut, wenn Du das etwas genauer beschreiben würdest. Deine Beispielwerte folgen immer demselben Schema:
es wäre schon gut, wenn Du das etwas genauer beschreiben würdest. Deine Beispielwerte folgen immer demselben Schema:
- Aufbau: lll,rrr ; (lll = links vom Komma),(rrr = rechts vom Komma)
- drei identische lll folgen aufeinander
- die rrr Teile dieser lll differieren um genau +1
Re: Variable sortieren
Hallo
Nein das sind immer andere Werte, sie kommen von der Bildersuche mit GDip.
Es gibt bei einem Spiel Tannenbäume die man anklicken kann und jeder Spieler hat unterschiedlich viele Bäume stehen und sie stehen nie an der selben
Stelle.
Das funktioniert soweit ja auch alles gut, es kommt bloß mal vor, das er 1 Baum übersieht und wenn ich die Toleranz höher stelle, kommen eben die fast doppelten Koordinaten raus.
Nein das sind immer andere Werte, sie kommen von der Bildersuche mit GDip.
Es gibt bei einem Spiel Tannenbäume die man anklicken kann und jeder Spieler hat unterschiedlich viele Bäume stehen und sie stehen nie an der selben
Stelle.
Das funktioniert soweit ja auch alles gut, es kommt bloß mal vor, das er 1 Baum übersieht und wenn ich die Toleranz höher stelle, kommen eben die fast doppelten Koordinaten raus.
Re: Variable sortieren
Vielen Dank, klappt leider nicht so wie ich dachte
Hier mal mein Script, wie bekomme ich es hin, das ich die Variable "OutputList" da sortieren kann ?
Hier mal mein Script, wie bekomme ich es hin, das ich die Variable "OutputList" da sortieren kann ?
Code: Select all
#SingleInstance, Force
#NoEnv
SetBatchLines, -1
ListLines Off
Sleep, 100
#Include, D:\Tools\AutoHotkey 1.1\Gdip_All.ahk
#Include D:\Tools\AutoHotkey 1.1\Compiler\ToolTipOpt.ahk
#Include D:\Tools\AutoHotkey 1.1\Gdip_ImageSearch.ahk
ToolTipFont("s16", "arialbd")
WinActivate,ahk_exe chrome.exe
Sleep, 100
ToolTip, Wenn Du bereit bist dann drücke die linke "Strg" Taste, 95, 80, 3
KeyWait, LControl, D
ToolTip, , , , 3
pToken := Gdip_Startup()
winName := "ahk_exe chrome.exe"
clientW := 1920 ; set your client area width
clientH := 1080 ; set your client area height
WinGetPos, x, y, w, h, %winName%
winBorder := (w-clientW)/2
x := x+winBorder
y := y+(h-clientH-winBorder)
snap := Gdip_BitmapFromScreen(x "|" y "|" clientW "|" clientH)
Gdip_SaveBitmapToFile(snap, "Bilder/ScreenShot.bmp")
Sleep, 250
Gdip_DisposeImage(snap)
bmpHaystack := Gdip_CreateBitmapFromFile("Bilder/ScreenShot.bmp")
Sleep, 250
bmpNeedle := Gdip_CreateBitmapFromFile("Bilder/TannenBaum-gross.png")
Sleep, 50
bmpNeedle1 := Gdip_CreateBitmapFromFile("Bilder/TannenBaum-mittel.png")
Sleep, 50
bmpNeedle2 := Gdip_CreateBitmapFromFile("Bilder/TannenBaum-klein.png")
Sleep, 50
RET := Gdip_ImageSearch(bmpHaystack,bmpNeedle,OutputList,0,0,0,0,21,"",1,0)
Sleep, 100
RET1 := Gdip_ImageSearch(bmpHaystack,bmpNeedle1,OutputList1,0,0,0,0,12,"",1,0)
Sleep, 100
RET2 := Gdip_ImageSearch(bmpHaystack,bmpNeedle2,OutputList2,0,0,0,0,12,"",1,0)
Sleep, 100
Gdip_DisposeImage(bmpHaystack)
Gdip_DisposeImage(bmpNeedle)
Gdip_Shutdown(gdipToken)
gross := 0
mittel := 0
klein := 0
;---------------OutputList-----------
alt = %OutputList% ;Das klappt leider nicht
vor1 =
vor2 =
loop, parse, alt, `n
{
stringsplit, lfd, a_loopfield, `,
if (lfd1 <> vor1) or (lfd2 <> vor2 + 1)
neu .= a_loopfield "`n"
vor1 := lfd1
vor2 := lfd2
}
FileDelete, neu.txt
Sort, neu, U P
Sleep, 100
FileAppend,%neu%, OutputList.txt
;msgbox, % neu
;-------------OutputList ende----------------
;FileDelete, OutputList.txt
;Sort, OutputList, U P
;Sleep, 100
;FileAppend,%OutputList%, OutputList.txt
;FileAppend,%OutputList1%, OutputList1.txt
;FileAppend,%OutputList2%, OutputList2.txt
;---------Großer Tannenbaum-------------
ToolTip, %ret% große Tannenbäume gefunden, 100, 900, 12
ToolTip, %ret1% mittlere Tannenbäume gefunden, 100, 930, 13
ToolTip, %ret2% kleine Tannenbäume gefunden, 100, 960, 14
ZeilenArray := StrSplit(neu, "`n", "`r")
;ZeilenArray := StrSplit(OutputList, "`n", "`r")
For ZeilenNummer, ZeilenInhalt In ZeilenArray {
xy:= StrSplit(ZeilenInhalt, ",")
SeitenAngabeX := xy[1]
SeitenAngabeY := xy[2]
MouseMove, %SeitenAngabeX%, %SeitenAngabeY%, 0
Sleep, 100
SendEvent, {Click, Rel 5, 15, 0}
Click, Left, 1
Sleep, 1500
MouseMove, 800, 690, 0
Sleep, 100
Click, Left, 1
Sleep, 1000
MouseMove, 1266, 932, 0
Sleep, 100
Click, Left, 1
Sleep, 100
gross += 1
ToolTip, %gross%, 460, 900, 15
}
;---------Großer Tannenbaum ende-------------
;---------Mittlerer Tannenbaum-------------
ZeilenArray := StrSplit(OutputList1, "`n", "`r")
For ZeilenNummer, ZeilenInhalt In ZeilenArray {
xy:= StrSplit(ZeilenInhalt, ",")
SeitenAngabeX := xy[1]
SeitenAngabeY := xy[2]
MouseMove, %SeitenAngabeX%, %SeitenAngabeY%, 0
Sleep, 100
Click, Left, 1
Sleep, 1500
MouseMove, 800, 690, 0
Sleep, 100
Click, Left, 1
Sleep, 1000
MouseMove, 1266, 932, 0
Sleep, 100
Click, Left, 1
Sleep, 100
mittel += 1
ToolTip, %mittel%, 460, 930, 16
}
;---------Mittlerer Tannenbaum Ende-------------
;---------Kleiner Tannenbaum-------------
ZeilenArray := StrSplit(OutputList2, "`n", "`r")
For ZeilenNummer, ZeilenInhalt In ZeilenArray {
xy:= StrSplit(ZeilenInhalt, ",")
SeitenAngabeX := xy[1]
SeitenAngabeY := xy[2]
MouseMove, %SeitenAngabeX%, %SeitenAngabeY%, 0
Sleep, 100
Click, Left, 1
Sleep, 1500
MouseMove, 800, 690, 0
Sleep, 100
Click, Left, 1
Sleep, 1000
MouseMove, 1266, 932, 0
Sleep, 100
Click, Left, 1
Sleep, 100
klein += 1
ToolTip, %klein%, 460, 960, 17
}
;---------Kleiner Tannenbaum Ende-------------
EXIT_LABEL4: ; be really sure the script will shutdown GDIP
Gdip_Shutdown(gdipToken)
ToolTip, Keine Weihnachtsbäume mehr vorhanden, 750, 520, 6
Sleep, 1000
ToolTip,,,,6
ToolTip,,,,12
ToolTip,,,,13
ToolTip,,,,14
ToolTip,,,,15
ToolTip,,,,16
ToolTip,,,,17
Gdip_ShutDown(pToken)
Sleep, 100
ExitApp
return
F8::
ExitApp
return
Re: Variable sortieren
Hallo Just Me
Aufbau: lll,rrr ; (lll = links vom Komma),(rrr = rechts vom Komma)
drei identische lll folgen aufeinander
die rrr Teile dieser lll differieren um genau +1
Ja das ist wirklich immer so
lll = links vom Komma
rrr = rechts vom Komma
Hier mal 1 Bild, wie die Weihnachtsbäume stehen, wie gesagt, immer anders je nachdem wo der User die hinstellt.
Aufbau: lll,rrr ; (lll = links vom Komma),(rrr = rechts vom Komma)
drei identische lll folgen aufeinander
die rrr Teile dieser lll differieren um genau +1
Ja das ist wirklich immer so
lll = links vom Komma
rrr = rechts vom Komma
Hier mal 1 Bild, wie die Weihnachtsbäume stehen, wie gesagt, immer anders je nachdem wo der User die hinstellt.
Re: Variable sortieren
Was klappt leider nicht?nacken012 wrote: ↑23 Feb 2019, 12:33Vielen Dank, klappt leider nicht so wie ich dachte ...
Code: Select all
... ;---------------OutputList----------- alt = %OutputList% ;Das klappt leider nicht vor1 = vor2 = ...
Re: Variable sortieren
Suchst Du Gedankenleser, dann bist Du hier im falschen Forum
Übrigens, meine Glaskugel fragt: Hast Du auch an OutputList1 und OutputList2 gedacht ?
Sind die Listen wirklich schon wie angegeben, oder warum sortierst Du sie anschließend ?
Hubert
Übrigens, meine Glaskugel fragt: Hast Du auch an OutputList1 und OutputList2 gedacht ?
Sind die Listen wirklich schon wie angegeben, oder warum sortierst Du sie anschließend ?
Hubert
Re: Variable sortieren
Hallo, sorry, bin immer am am grübel.
Ja an OutputList1 und 2 habe ich natürlich auch gedacht.
Dachte, ja jetzt klappt es, aber leider nicht ganz und es hat lange gedauert bis ich gesehen habe wieso.
Sagen wir er hatte 3 Koordinaten Reihen, hat die Bäume auch schon angeklickt und danach einfach irgendwo im Bild.
Gesehen habe ich es erst, als ich die Liste im Editor geöffnet habe,
Hier wird in der letzter Zeile eine Freizeile erstellt, also ohne Koordinaten, deswegen auch der Klick irgendwo im Bild zum Schluß
Ja an OutputList1 und 2 habe ich natürlich auch gedacht.
Code: Select all
alt =
(
%OutputList%
)
vor1 =
vor2 =
loop, parse, alt, `n
{
stringsplit, lfd, a_loopfield, `,
if (lfd1 <> vor1) or (lfd2 <> vor2 + 1)
neu .= a_loopfield "`n"
vor1 := lfd1
vor2 := lfd2
}
ZeilenArray := StrSplit(neu, "`n", "`r")
For ZeilenNummer, ZeilenInhalt In ZeilenArray {
xy:= StrSplit(ZeilenInhalt, ",")
SeitenAngabeX := xy[1]
SeitenAngabeY := xy[2]
MouseMove, %SeitenAngabeX%, %SeitenAngabeY%, 0
Sleep, 100
SendEvent, {Click, Rel 5, 15, 0}
Click, Left, 1
Sleep, 1500
MouseMove, 800, 690, 0
Sleep, 100
Click, Left, 1
Sleep, 1000
MouseMove, 1266, 932, 0
Sleep, 100
Click, Left, 1
Sleep, 100
mittel += 1
ToolTip, %mittel%, 460, 930, 15
Sleep, 1000
}
Sagen wir er hatte 3 Koordinaten Reihen, hat die Bäume auch schon angeklickt und danach einfach irgendwo im Bild.
Gesehen habe ich es erst, als ich die Liste im Editor geöffnet habe,
Hier wird in der letzter Zeile eine Freizeile erstellt, also ohne Koordinaten, deswegen auch der Klick irgendwo im Bild zum Schluß
Code: Select all
alt =
(
%OutputList%
)
vor1 =
vor2 =
loop, parse, alt, `n
{
stringsplit, lfd, a_loopfield, `,
if (lfd1 <> vor1) or (lfd2 <> vor2 + 1)
neu .= a_loopfield "`n"
vor1 := lfd1
vor2 := lfd2
}
Re: Variable sortieren
Moin,
hast Du das erkannte Problem nun selbst gelöst?
hast Du das erkannte Problem nun selbst gelöst?
Re: Variable sortieren
Noch nicht, arbeite ich aber weiter dran wenn ich mehr zeit habe.
Vielen Dank für die Hilfe von Euch
Vielen Dank für die Hilfe von Euch
Re: Variable sortieren
Da bin ich wieder, jetzt habe ich nur mal das obere Script genommen, was ja soweit auch funktioniert.
Das Problem ist aber, das eine Leerzeile an letzter Stelle erzeugt wird, wie ich einfach nicht weg bekomme, siehe Bild.
Code: Select all
alt =
(
1244,238
1244,239
1244,240
268,342
268,343
268,344
348,526
348,527
348,528
444,478
444,479
444,480
)
vor1 =
vor2 =
loop, parse, alt, `n
{
stringsplit, lfd, a_loopfield, `,
if (lfd1 <> vor1) or (lfd2 <> vor2 + 1)
neu .= a_loopfield "`n"
vor1 := lfd1
vor2 := lfd2
}
fileappend,%neu%,test55.txt
msgbox,%neu%
return
Re: Variable sortieren
Moin,
diese letzte leere Zeile entsteht hierweil jeder Eintrag in neu mit einem Zeilenvorschub `n abgeschlossen wird.
Gängige Lösungen nach Ende der Schleife:Damit wird der letzte Zeilenvorschub wieder entfernt.
diese letzte leere Zeile entsteht hier
Code: Select all
loop, parse, alt, `n
{
stringsplit, lfd, a_loopfield, `,
if (lfd1 <> vor1) or (lfd2 <> vor2 + 1)
neu .= a_loopfield "`n" ; <<<<<
vor1 := lfd1
vor2 := lfd2
}
Gängige Lösungen nach Ende der Schleife:
Code: Select all
neu := RTrim(neu, "`n")
; oder
neu := SubStr(neu, 1, -1)
Re: Variable sortieren
Vielen lieben Dank, das funktioniert perfekt
Who is online
Users browsing this forum: No registered users and 50 guests