slacky Skrevet 16. januar 2012 Del Skrevet 16. januar 2012 (endret) Heisann! Jeg har laget en enkel funksjon for å bevege musen i alle mulige vinkler. Fremgangsmåten jeg bruker er relativt "manneskelik". Ved enkelt dele nåverende punkt (wx,wy) på punktet den skal til (x,y) for hver repitisjon (loop). Jeg runder av til nermeste hele tall. På denne måten skaper jeg en bevegelse med C-mønster eller S-mønster (kommer ann på vinkel, - såvidt synelig). Hastigheten vil også øke og minke, da pixel-hoppet vil variere fra 1 og 1 pixel til "max" lengde (wx til x/wy til y), - dette kommer også ann på vinkel. Nå lurer jeg på om jeg kan få til noe lignende ved å bruke en enkel pythonisk algoritme for å gjøre scriptet enkelere. Ønsker egentlig bare å slippe unne alle if/else, det er uoversiktelig, og gir meg dermed liten kontroll. Nåverende kode: def Move(x,y): wx, wy = win32api.GetCursorPos() while (wx != x) or (wy != y): if(y>wy) and (x>wx): px, py = x-wx, y-wy elif(y<wy) and (x>wx): px, py = x-wx, wy-y elif(y<wy) and (x<wx): px, py = wx-x, wy-y elif(y>wy) and (x<wx): px, py = wx-x, y-wy elif(y>wy) and (x==wx): px, py = x, y-wy elif(y<wy) and (x==wx): px, py = x, wy-y elif(x<wx) and (y==wy): px, py = x-wx, y elif(x>wx) and (y==wy): px, py = wx-x, y if(px>py) and px!=0 and py!=0: ax,ay=int(round(px/py)), 1 #ukjent vinkel elif(px<py) and px!=0 and py!=0: ay,ax=int(round(py/px)), 1 #ukjent vinkel elif(px==py or px==0 or py==0):ay,ax=1, 1 #45 grader, eller ingen vinkel if(wx<x): wx = wx+ax if(wy<y): wy = wy+ay if(wx>x): wx = wx-ax if(wy>y): wy = wy-ay win32api.SetCursorPos((wx,wy)) waitR(0,0.002) Endret 18. januar 2012 av warpie 1 Lenke til kommentar
Yumekui Skrevet 17. januar 2012 Del Skrevet 17. januar 2012 (endret) Har du forsøkt med bezier-kurver? Disse kan så vidt jeg har forstått skaleres, og ser ut til å kunne rerpresenteres ganske greit (om en bare får satt seg inn i hvordan de brukes. ;_; ) Altså - En kan jo generere en liste over koordinater som musen skal innom, og bruke SetCursorPos på hver av disse med eventuelle pauser imellom hver posisjon. Problemet blir jo da å lage denne listen. http://en.wikipedia.org/wiki/Bézier_curve http://www.ablestable.com/play/bezier/index.htm Jeg holder egentlig på med noe av det samme, men jeg forsøker å gjøre det så menneskelikt som mulig (om jeg så må ha grusomt mange if-blokker). Har lagret en haug av bevegelser både som bilder og lister over koordinater, forsøker å finne en måte å generalisere utifra dette på. Endret 17. januar 2012 av Yumekui 1 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå