Die Funktion der Buffers

  • yxyx ich versuch nicht dasd die figur die bewegbar ist die koordinaten zu bereschen sondern einem festen balken (im script $balken) und will das wenn die figur den balken berührt wieder von vorne ist ich weiss nur nicht wie ich das schreiben soll.
    @MrMultibot sei einfach leise wenn du was zu meckern hast behalts für dich ok???

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

  • man kann es sich so vorstellen als wäre eine fläsche mit einem rechteckigem loch und wenn die figur das loch berührt sprich , runterfällt startet sie von vorne

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

  • Ich hab hier mal ein paar Funktionen geschrieben, die dir vielleicht weiterhelfen. ;)

    Spoiler anzeigen
    [autoit]

    Func _PointIsInCircle($iX_Point, $iY_Point, $iX_Circle, $iY_Circle, $iRadius_Circle)
    $iDistPoints = _GetPointsDistance($iX_Point, $iY_Point, $iX_Circle, $iY_Circle)
    If ($iRadius_Circle > 0 And $iDistPoints < $iRadius_Circle) Or ($iRadius_Circle < 0 And $iDistPoints > $iRadius_Circle) Or $iDistPoints = 0 Then Return True
    Return False
    EndFunc ;==>_PointIsInCircle

    [/autoit] [autoit][/autoit] [autoit]

    Func _CircleIsTouchingCircle($iX_Circle1, $iY_Circle1, $iX_Circle2, $iY_Circle2, $iRadius_Circle1, $iRadius_Circle2)
    $iDistCircles = _GetPointsDistance($iX_Circle1, $iY_Circle1, $iX_Circle2, $iY_Circle2)
    If $iDistCircles < $iRadius_Circle1 + $iRadius_Circle2 Then Return True
    Return False
    EndFunc ;==>_CircleIsTouchingCircle

    [/autoit] [autoit][/autoit] [autoit]

    Func _CircleIsInCircle($iX_Circle1, $iY_Circle1, $iX_Circle2, $iY_Circle2, $iRadius_Circle1, $iRadius_Circle2)
    $iDistCircles = _GetPointsDistance($iX_Circle1, $iY_Circle1, $iX_Circle2, $iY_Circle2)
    If $iRadius_Circle1 > $iRadius_Circle2 And $iDistCircles <= $iRadius_Circle1 - $iRadius_Circle2 Then Return True
    If $iRadius_Circle1 < $iRadius_Circle2 And $iDistCircles <= $iRadius_Circle2 - $iRadius_Circle1 Then Return True
    Return False
    EndFunc ;==>_CircleIsInCircle

    [/autoit] [autoit][/autoit] [autoit]

    Func _PointIsInEllipse($iX_Point, $iY_Point, $iXM_Ellipse, $iYM_Ellipse, $iWidth_Ellipse, $iHeight_Ellipse)
    If ($iX_Point - $iXM_Ellipse) ^ 2 / ($iWidth_Ellipse / 2) ^ 2 + ($iY_Point - $iYM_Ellipse) ^ 2 / ($iHeight_Ellipse / 2) ^ 2 <= 1 Then
    Return 1
    Else
    Return 0
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _PtIsInRect($iX_Point, $iY_Point, $iX_Rect, $iY_Rect, $iWidth_Rect, $iHeight_Rect)
    If $iX_Point >= $iX_Rect And $iY_Point >= $iY_Rect And $iX_Point <= $iX_Rect + $iWidth_Rect And $iY_Point <= $iY_Rect + $iHeight_Rect Then Return 1
    Return 0
    EndFunc ;==>_PtIsInRect

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetPointsDistance($iPointX1, $iPointY1, $iPointX2, $iPointY2)
    Return Sqrt(($iPointX1 - $iPointX2) ^ 2 + ($iPointY1 - $iPointY2) ^ 2)
    EndFunc ;==>_GetPointsDistance

    [/autoit]
  • du sollst nicht 2mal hintereinander posten.

    wenn dir nach paar minuten noch was einfällt was du in deinem letzen post noch nicht gesagt hast dann bearbeite ihn einfach

  • achso danke...
    Hey ich habs gerschafft!!! sry name22 aber was du geschrieben hast hab ich nicht kapiert ^^

    also ich hab das so gemacht :

    Spoiler anzeigen
    [autoit]


    #include <GuiConstants.au3>
    #include <GdiPlus.au3>;das include
    #include <Misc.au3>
    MsgBox (0, "Aufgabe", "Komme zum Ziel ohne die schwarzen Balken zu berühren!!!")

    [/autoit] [autoit][/autoit] [autoit]

    OnAutoItExitRegister("_end") ; die Funktion _end am Ende des Scriptes ausführen

    [/autoit] [autoit][/autoit] [autoit]

    $x = 0;x und y deklarieren
    $y = 0

    [/autoit] [autoit][/autoit] [autoit]

    $Gui = GUICreate("Beispiel", 179, 163, 100,100)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup() ;Gdi starten

    [/autoit] [autoit][/autoit] [autoit]

    $figur = _GDIPlus_ImageLoadFromFile(@DesktopDir & "\figur.gif")
    $bk = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\weiss.jpg")
    $balken = _GDIPlus_ImageLoadFromFile (@ScriptDir & "\balken.gif")
    $ziel = _GDIPlus_ImageLoadFromFile (@ScriptDir & "\ZIEL.gif")
    $height = _GDIPlus_ImageGetHeight($figur)
    $width = _GDIPlus_ImageGetWidth($figur)
    $verhaelnis = $height / $width
    $graphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
    $bitmap = _GDIPlus_BitmapCreateFromGraphics(179, 163, $graphic)
    $buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
    $buffer1 = _GDIPlus_ImageGetGraphicsContext($bitmap)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    Select
    Case _IsPressed(25) and not $x <= 0 ; nach links
    $x -= 3
    Case _IsPressed(26) and not $y <= 0; nach oben
    $y -= 3
    Case _IsPressed(27) and $x <= 160 ; nach rechts
    $x += 3
    Case _IsPressed(28) and $y <= 135 ; nach unten
    $y += 3
    EndSelect

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsDrawImageRect($buffer,$bk,0,0,179, 163)
    $balken2 =_GDIPlus_GraphicsDrawImageRect($buffer,$balken,25, 30, 100, 10)
    _GDIPlus_GraphicsDrawImageRect ($buffer, $ziel, 160, 135, 20,20 )
    _GDIPlus_GraphicsDrawImageRect($buffer,$figur,$x,$y,25, 25 * $verhaelnis)
    _GDIPlus_GraphicsDrawImage($graphic, $bitmap, 0, 0)
    Sleep(30)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    If $y <= 36 and $y >= 15 and $x >= 3 And $x <=123 Then
    $x =0
    $y= 0
    ElseIf $x >= 155 and $x <= 170 and $y <= 140 and $y >= 115 Then
    MsgBox (0, "Win","du hast gewonnen!!! ", 10)
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _end ();die Exit funktion
    _GDIPlus_GraphicsDispose($graphic);Grafik Objekt freigeben
    _GDIPlus_GraphicsDispose($buffer)
    _GDIPlus_BitmapDispose($bitmap)
    _GDIPlus_ImageDispose ($balken)
    _GDIPlus_ImageDispose($figur);Bild Objekt 1 freigeben
    _GDIPlus_ImageDispose($bk);Bild Objekt 2 freigeben
    _GDIPlus_Shutdown();Ressourcen freigeben
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

    2 Mal editiert, zuletzt von BadBunny (4. Juni 2010 um 19:09)

  • Joa so gehts auch, hättest auch einfach das hier

    Spoiler anzeigen
    [autoit]

    Select
    Case _IsPressed(25) and not $x <= 0 ; nach links
    $x -= 3
    Case _IsPressed(26) and not $y <= 0; nach oben
    $y -= 3
    Case _IsPressed(27) and $x <= 160 ; nach rechts
    $x += 3
    Case _IsPressed(28) and $y <= 135 ; nach unten
    $y += 3
    EndSelect

    [/autoit]

    erweitern können : and not blabla and not blabla......

    MfG Hellboy

    MfG hellboy

    [autoit]

    Do
    _help($user)
    Until $questions = 0

    [/autoit]

    Meine Werke:
    Ste`s Web-Radio

  • Na jetzt habt ihr es ihm zumindest halb gecodet ohne das er lesen musste.
    Leider muss ich Mr.MultiBot rechtgeben (in seinem letzten Post)

    Wie gesagt weigere ich mich hier zu helfen.

    mfg Ubuntu

    Ps: Ich glaube nicht das mein Tut keine Fragen offen lässt aber im Prizip standen die letzten Posts hier so ähnlich im Tutorial und wenn einer überhaupt keine eigeninitiantive zeigt, dann hab ich keine Lust für ihn zu schreiben.

  • Ps: Ich glaube nicht das mein Tut keine Fragen offen lässt aber im Prizip standen die letzten Posts hier so ähnlich im Tutorial und wenn einer überhaupt keine eigeninitiantive zeigt, dann hab ich keine Lust für ihn zu schreiben.

    jup seh ich auch so.
    grundsätzlich sollte es erstmal jeder selbst probieren.
    wenn dann hilfe benötigt wird kann sich ja jeder gerne melden. (mit script)

    BadBunny: übernimm dich für die ersten scripts nicht allzusehr.
    mit gdi+ arbeiten eher wenig. natürlich kann man sehr tolle sachen damit machen aber grundlagen sollte man ersteinmal wo anders lernen
    is meine meinung dazu...