1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Forum
  3. AutoIt 3
  4. Skripte

MoveToMouse

  • o2candoo
  • 23. Juli 2020 um 16:26
  • o2candoo
    Anfänger
    Beiträge
    25
    • 23. Juli 2020 um 16:26
    • #1

    Hi Leute

    Wiedermal ein neues "Just4Fun-Script" :)

    Die Idee stammt aus folgendem Link:

    Orca

    Wenn der Link nicht funktioniert, findet man das Prinzip unter folgendem YT Video:

    YT-Orca


    - In diesem Skript ist das ganze mit Kreisen als Platzhalter umgesetzt.

    Das Ziel ist es jeden Kreis durch ein gezeichnetes layer zu ersetzen, um auch ein solches Orca Bild wie im Link zu erhalten.

    (Hat jemand bock diese Layer für mich zu zeichnen? Muss nicht zwingend ein Orca sein, kann auch ein Vogel oder sonstiges abbilden)

    - Damit nicht immer der ganze Bildschirm gerendert werden muss (was alles verlangsamt),

    habe ich den Bildschirm 'Gekachelt' in 9 Segmente in welche das Gui springt

    --> Nachteil: Es Flackert bei den Übergängen und bei schneller Mausbewegung.

    --> Lösungsansatz: Das Fenster permanent mit der Maus mitbewegen und die Objektpositionierung dementsprechend anpassen

    (Mache ich sobald ich Zeit und Lust dazu habe)

    - Die Objektbewegung kann je nach rechenpower variieren. Sie ist derzeit mit der Funktion in Zeile 37 als erster Näherungsansatz umgesetzt (nach gefühl).


    Teilt mir eure Gedanken mit wenn Ihr lust dazu habt und wie immer bin ich offen für Ideen und Verbesserungsvorschläge :thumbup:


    LG

    Dateien

    MoveToMouse.au3 4,91 kB – 470 Downloads
  • Yjuq
    Profi
    Beiträge
    1.172
    • 23. Juli 2020 um 16:54
    • #2

    Woha, ich mag die Idee. Ich glaube ich mache mir daraus ein Live Wallpaper. :P

    Ich werde da auch mal ein an einer Version basteln. Gerne Teile ich dir dann meine Lösungsansätze mit. Wenn du ggf. Grafiken brauchst könnte ich welche machen. Dauert nur je nachdem wie ich Lust & Zeit habe.

  • alpines
    天照大神
    Beiträge
    4.209
    • 23. Juli 2020 um 17:01
    • #3

    Braucht definitiv noch ein bisschen Arbeit aber wow, sieht richtig gut aus, gefällt mir sehr gut.

    Kleiner Tipp: Nimm als Berechnung der Zeichenstrecke nicht die Iteration * Schritt, da diese unterschiedlich oft ausgeführt wird auf stärkeren/schwächeren PCs.

    Erstell dir eine Timer-Variable und setze sie mit jeder Schleifeniteration neu und speichere dabei die Differenz zur letzten Schleife.

    Dann normalisierst du den Wert auf eine Sekunde bspw. und multiplizierst ihn mit dem Faktor den ein Kreis zurücklegen soll pro Sekunde.

    Dann ist das ganze FPS unabhängig.

    86152-alpi7958-png

    ►►► PassIt2 - Dateien zwischen PCs einfach und bequem übertragen!

    ► GUIScaler - GUIs automatisch zur DPI skalieren lassen (Windows 7 und Windows 10 Per-Monitor-DPI)

    ► TrackMania² Automated Server Controller (TMASECO) - Controller inklusive Manialinkpage-Support in AutoIt!

    ► Extensa - Hotkeys für unterschiedliche Eingabegeräte trennen

    ► Lust auf ein kleines Spiel in AutoIt? Snake, Tunnel, Tetris, NumberStrike, Pazaak (Star Wars)

    Der Rest meiner Werke

    A*-Algorithmus - Pathfinding

    C# / VB .NET DLLs erstellen und in AutoIt verwenden!

    Funktionsplotter

    Integralrechner
    Dezimal- zu Binär-Umrechner

    NumberConvert
    _SquareRoot
    _WinGetTitleEx
    Tap - BPM Counter
    Wake On Lan

    _ArraySortStable2D

    RingBuffer.au3

  • Yjuq
    Profi
    Beiträge
    1.172
    • 23. Juli 2020 um 17:16
    • #4
    Zitat von alpines

    Braucht definitiv noch ein bisschen Arbeit aber wow, sieht richtig gut aus, gefällt mir sehr gut.

    Kleiner Tipp: Nimm als Berechnung der Zeichenstrecke nicht die Iteration * Schritt, da diese unterschiedlich oft ausgeführt wird auf stärkeren/schwächeren PCs.

    Erstell dir eine Timer-Variable und setze sie mit jeder Schleifeniteration neu und speichere dabei die Differenz zur letzten Schleife.

    Dann normalisierst du den Wert auf eine Sekunde bspw. und multiplizierst ihn mit dem Faktor den ein Kreis zurücklegen soll pro Sekunde.

    Dann ist das ganze FPS unabhängig.

    Ich hatte dazu mal einen Beitrag geschrieben: RE: PandaRunner Reworked - Ein Autoit Game

    Für jene die es interessiert.

  • alpines
    天照大神
    Beiträge
    4.209
    • 23. Juli 2020 um 17:18
    • #5
    Zitat von Yjuq

    Ich hatte dazu mal einen Beitrag geschrieben: RE: PandaRunner Reworked - Ein Autoit Game


    Für jene die es interessiert.

    C
    #include <GUIConstantsEx.au3>
    #include <SliderConstants.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    
    Opt("GUIOnEventMode", 1)
    
    $Form1 = GUICreate("Form1", 615, 342, 192, 124)
    GUISetOnEvent(-3, _Exit)
    
    $Slider1 = GUICtrlCreateSlider(8, 288, 590, 45)
    GUICtrlSetLimit(-1, 100, 0)
    GUICtrlSetData(-1, 10)
    GUISetState(@SW_SHOW)
    
    _GDIPlus_Startup()
    
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($Form1)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(615, 200, $hGraphics)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    
    Local $fStep = 5
    Local $fStepPerSecond = 1.0
    Local $tmrTimer = TimerInit()
    
    Local $iX1 = 0
    Local $iX2 = 0
    
    While 1
    
        $iX1 += $fStep
        $iX2 += $fStepPerSecond * TimerDiff($tmrTimer)
    
        $tmrTimer = TimerInit()
    
    
        _GDIPlus_GraphicsFillRect($hBuffer, $iX1, 10, 50, 50)
        _GDIPlus_GraphicsFillRect($hBuffer, $iX2, 70, 50, 50)
    
        _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 0)
        _GDIPlus_GraphicsClear($hBuffer, 0xFFFFFFFF)
    
    
        If $iX1 > 600 Then $iX1 = 0
        If $iX2 > 600 Then $iX2 = 0
    
        Sleep(GUICtrlRead($Slider1))
    WEnd
    
    Func _Exit()
        Exit
    EndFunc
    Alles anzeigen

    Etwas spartanisch aber verdeutlicht es auch. Kurz zusammengeschustert.

    86152-alpi7958-png

    ►►► PassIt2 - Dateien zwischen PCs einfach und bequem übertragen!

    ► GUIScaler - GUIs automatisch zur DPI skalieren lassen (Windows 7 und Windows 10 Per-Monitor-DPI)

    ► TrackMania² Automated Server Controller (TMASECO) - Controller inklusive Manialinkpage-Support in AutoIt!

    ► Extensa - Hotkeys für unterschiedliche Eingabegeräte trennen

    ► Lust auf ein kleines Spiel in AutoIt? Snake, Tunnel, Tetris, NumberStrike, Pazaak (Star Wars)

    Der Rest meiner Werke

    A*-Algorithmus - Pathfinding

    C# / VB .NET DLLs erstellen und in AutoIt verwenden!

    Funktionsplotter

    Integralrechner
    Dezimal- zu Binär-Umrechner

    NumberConvert
    _SquareRoot
    _WinGetTitleEx
    Tap - BPM Counter
    Wake On Lan

    _ArraySortStable2D

    RingBuffer.au3

  • Mars
    Marster Of Disaster
    Reaktionen
    3
    Beiträge
    1.278
    • 23. Juli 2020 um 21:11
    • #6

    Ich habe nicht reingeschaut und nichts ausprobiert, aber meine Intuition sagt mir, dass GDI+ hier die falsche Hausnummer ist. Wenn ich das richtig sehe sollen relativ großflächige Bitmaps (mit Transparenz) übereinandergezeichnet werden. GDI+ kommt schon bei EINER Bitmap in Fullscreen Auflösung ins schwitzen.

    Ich würde das ganze in D2D oder via WinAPI (AlphaBlend aus der GDI32.dll) versuchen.

    Wenn man nur ein paar % CPU-Last will ist D2D auf jedenfall die richtige Wahl dafür.

    lg

    M

    Spiele: DropOff DropOff2 MiniTowerDefense MicroTowerDefense MultiplayerInvaders Snake
    Sonstiges/Nonsense: ImageButton ImageButton2 ProzeduraleGrafiken
    Tutorials: [Leicht] Snake programmieren [Mittel] Komplexität verstehen

    86148-w5yzfng-png
    Meine Skripte können nix, aber ich preise sie dennoch als Wunderwerke an !

  • o2candoo
    Anfänger
    Beiträge
    25
    • 20. Juni 2024 um 19:35
    • #7

    Bin nach einiger Zeit wieder hier vorbeigestolpert und habe dieses Thema gesehen.

    Ich habe in der Zwischenzeit ein Algorithmus in Python geschriben, der ziemlich flüssig läuft.

    Es ist immernoch umgesetzt mit den Punkten als Platzhalter, daher frage ich nochmals ob jemand bock hat die Layer für obengenannte Vorschläge zu zeichnen :)


    Bei Interesse gerne auf mich zukommen. Teile auch gerne den Pythoncode.

  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™