Problem mit If-Abfrage

  • Hallo erst mal

    Ich habe Heute Morgen angefangen eine Beispiel GUI zu Schreiben allerdings

    Funktioniert diese nicht so Recht. Eigentlich soll wenn man mit der Maus über

    das Schließen Bild geht, sich das Bild ändern das tut es auch aber jetzt komm

    ich nicht mehr weiter weil das Fenster soll sich auch noch Schließen wenn man

    auf das Bild klickt Ich bedanke mich schon im voraus für eure Hilfe!

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GdiPlus.au3>
    #include <Misc.au3>
    #include <file.au3>
    Global $path, $Leben, $path2
    OnAutoItExitRegister("_end")
    $x = 0
    $y = 0
    $path = @ScriptDir & "\PICS\"
    $path = @ScriptDir & "\INI\"
    $Leben = IniRead(@ScriptDir & "\INI\DATA.ini","DATA","Leben",1)
    $Form1 = GUICreate("X-The Game", 600, 500, Default, Default,$WS_POPUP)
    GUISetBkColor(0xffa500,$Form1)
    GUISetState(@SW_SHOW)
    _GdiPlus_StartUp()
    $Player = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Skin.gif")
    $bk = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Gras.gif")
    $height = _GDIPlus_ImageGetHeight($Player)
    $widht = _GDIPlus_ImageGetWidth($Player)
    $verhaelnis = $height / $widht
    $load_bk = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Load_Leer.gif")
    $load = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Load.gif")
    $erschaffen = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Erschaffen.gif")
    $btn_exit = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\close1.gif")
    $feld1 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Feld.gif")
    $feld2 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Feld.gif")
    $feld3 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Feld.gif")
    $feld4 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Feld.gif")
    $feld5 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Feld.gif")
    $feld6 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Feld.gif")
    $graphic = _GDIPlus_GraphicsCreateFromHWND($Form1)
    $bitmap = _GDIPlus_BitmapCreateFromGraphics(700,500, $graphic)
    $buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
    While 1
    ;===========Buttons==============================;
    $mouse = GUIGetCursorInfo()
    If IsArray($mouse) then
    If $mouse[0] >= 520 and $mouse[1] <= 25 then
    $btn_exit = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\close2.gif")
    Else
    $btn_exit = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\close1.gif")
    EndIf
    EndIf
    ;================ENDE=============================;
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    Select
    Case _IsPressed(25) And Not $x <= 0
    $x -=40
    Case _IsPressed(26) And Not $y <= 0
    $y -=40
    Case _IsPressed(27) And $x <= 340
    $x +=40
    Case _IsPressed(28) And $y <= 340
    $y +=40
    EndSelect
    _GDIPlus_GraphicsDrawImageRect($buffer,$erschaffen,440,60,120,120)
    _GDIPlus_GraphicsDrawImageRect($buffer, $bk,0,0,400,400)
    _GDIPlus_GraphicsDrawImageRect($buffer, $Player,$x,$y,40,40 * $verhaelnis)
    _GDIPlus_GraphicsDrawImageRect($buffer, $load_bk,80,450,220,40)
    _GDIPlus_GraphicsDrawString($graphic,"LP/" & $Leben, 0, 460)
    _GDIPlus_GraphicsDrawImageRect($buffer, $btn_exit,560, 0,40,40)
    _GDIPlus_GraphicsDrawImageRect($buffer, $load,90, 460, $Leben*2,20)
    _GDIPlus_GraphicsDrawImageRect($buffer,$feld1,440,200,60,60)
    _GDIPlus_GraphicsDrawImageRect($buffer,$feld2,440,270,60,60)
    _GDIPlus_GraphicsDrawImageRect($buffer,$feld3,440,340,60,60)
    _GDIPlus_GraphicsDrawImageRect($buffer,$feld4,510,200,60,60)
    _GDIPlus_GraphicsDrawImageRect($buffer,$feld5,510,270,60,60)
    _GDIPlus_GraphicsDrawImageRect($buffer,$feld6,510,340,60,60)
    _GDIPlus_GraphicsDrawImage($graphic, $bitmap,0,0)
    Sleep(500)
    WEnd
    Func _end()
    _GDIPlus_GraphicsDispose($graphic)
    _GDIPlus_GraphicsDispose($buffer)
    _GDIPlus_BitmapDispose($bitmap)
    _GDIPlus_ImageDispose($Player)
    _GDIPlus_ImageDispose($bk)
    _GDIPlus_Shutdown()
    EndFunc

    [/autoit]
    • Offizieller Beitrag
    Spoiler anzeigen
    [autoit]

    #Region - Timestamp
    ; 2013-03-30 17:08:49
    #EndRegion

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

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GdiPlus.au3>
    #include <Misc.au3>
    #include <file.au3>
    Global $path, $Leben, $path2
    OnAutoItExitRegister("_end")
    $x = 0
    $y = 0
    $path = @ScriptDir & "\PICS\"
    $path = @ScriptDir & "\INI\"
    $Leben = IniRead(@ScriptDir & "\INI\DATA.ini", "DATA", "Leben", 1)
    $Form1 = GUICreate("X-The Game", 600, 500, Default, Default, $WS_POPUP)
    GUISetBkColor(0xffa500, $Form1)
    GUISetState(@SW_SHOW)
    _GDIPlus_Startup()
    $Player = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Skin.gif")
    $bk = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Gras.gif")
    $height = _GDIPlus_ImageGetHeight($Player)
    $widht = _GDIPlus_ImageGetWidth($Player)
    $verhaelnis = $height / $widht
    $load_bk = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Load_Leer.gif")
    $load = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Load.gif")
    $erschaffen = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Erschaffen.gif")
    $btn_exit = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\close1.gif")
    $feld1 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Feld.gif")
    $feld2 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Feld.gif")
    $feld3 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Feld.gif")
    $feld4 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Feld.gif")
    $feld5 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Feld.gif")
    $feld6 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Feld.gif")
    $graphic = _GDIPlus_GraphicsCreateFromHWND($Form1)
    $bitmap = _GDIPlus_BitmapCreateFromGraphics(700, 500, $graphic)
    $buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
    While 1
    ;===========Buttons==============================;
    $mouse = GUIGetCursorInfo()
    If IsArray($mouse) Then
    If $mouse[0] >= 520 And $mouse[1] <= 25 Then
    $btn_exit = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\close2.gif")
    Else
    $btn_exit = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\close1.gif")
    EndIf
    EndIf
    ;================ENDE=============================;
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $GUI_EVENT_PRIMARYUP
    ConsoleWrite("$GUI_EVENT_PRIMARYDOWN" & @CRLF)
    If IsArray($mouse) Then
    If $mouse[0] >= 520 And $mouse[1] <= 25 Then
    Exit
    EndIf
    EndIf
    EndSwitch
    Select
    Case _IsPressed(25) And Not $x <= 0
    $x -= 40
    Case _IsPressed(26) And Not $y <= 0
    $y -= 40
    Case _IsPressed(27) And $x <= 340
    $x += 40
    Case _IsPressed(28) And $y <= 340
    $y += 40
    EndSelect
    _GDIPlus_GraphicsDrawImageRect($buffer, $erschaffen, 440, 60, 120, 120)
    _GDIPlus_GraphicsDrawImageRect($buffer, $bk, 0, 0, 400, 400)
    _GDIPlus_GraphicsDrawImageRect($buffer, $Player, $x, $y, 40, 40 * $verhaelnis)
    _GDIPlus_GraphicsDrawImageRect($buffer, $load_bk, 80, 450, 220, 40)
    _GDIPlus_GraphicsDrawString($graphic, "LP/" & $Leben, 0, 460)
    _GDIPlus_GraphicsDrawImageRect($buffer, $btn_exit, 560, 0, 40, 40)
    _GDIPlus_GraphicsDrawImageRect($buffer, $load, 90, 460, $Leben * 2, 20)
    _GDIPlus_GraphicsDrawImageRect($buffer, $feld1, 440, 200, 60, 60)
    _GDIPlus_GraphicsDrawImageRect($buffer, $feld2, 440, 270, 60, 60)
    _GDIPlus_GraphicsDrawImageRect($buffer, $feld3, 440, 340, 60, 60)
    _GDIPlus_GraphicsDrawImageRect($buffer, $feld4, 510, 200, 60, 60)
    _GDIPlus_GraphicsDrawImageRect($buffer, $feld5, 510, 270, 60, 60)
    _GDIPlus_GraphicsDrawImageRect($buffer, $feld6, 510, 340, 60, 60)
    _GDIPlus_GraphicsDrawImage($graphic, $bitmap, 0, 0)
    WEnd
    Func _end()
    _GDIPlus_GraphicsDispose($graphic)
    _GDIPlus_GraphicsDispose($buffer)
    _GDIPlus_BitmapDispose($bitmap)
    _GDIPlus_ImageDispose($Player)
    _GDIPlus_ImageDispose($bk)
    _GDIPlus_Shutdown()
    EndFunc ;==>_end

    [/autoit]


    Ein Sleep(500) hat in deiner Hauptschleife nix zu suchen, das Prog macht während dieser Zeit nichts. Es reagiert dann auch nicht auf einen Event :!:

  • Welche Figur meinst du damit? Machst du mal nen Screenshot davon?

    Da es hier doch einige falsch machen:

    Zitat von einem User dieses Forums

    Die Standard-Standart eines Flamingos ist einbeinig. ;)

    • Offizieller Beitrag

    Joriktos, benutze die Pfeiltasten. Damit kannst du das Schwarze Quadrat bewegen ;)

    • Offizieller Beitrag

    Ein Sleep gehört niemals in die MsgLoop-Schleife. Damit bekommst Du immer Probleme mit der Steuerung.
    Wenn Du das verlangsamen willst, benutze eine Timer:

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GdiPlus.au3>
    #include <Misc.au3>
    #include <file.au3>
    Global $path, $Leben, $path2
    OnAutoItExitRegister("_end")
    $x = 0
    $y = 0
    $path = @ScriptDir & "\PICS\"
    $path = @ScriptDir & "\INI\"
    $Leben = IniRead(@ScriptDir & "\INI\DATA.ini", "DATA", "Leben", 1)
    $Form1 = GUICreate("X-The Game", 600, 500, Default, Default, $WS_POPUP)
    GUISetBkColor(0xffa500, $Form1)
    GUISetState(@SW_SHOW)
    _GDIPlus_Startup()
    $Player = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Skin.gif")
    $bk = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Gras.gif")
    $height = _GDIPlus_ImageGetHeight($Player)
    $widht = _GDIPlus_ImageGetWidth($Player)
    $verhaelnis = $height / $widht
    $load_bk = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Load_Leer.gif")
    $load = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Load.gif")
    $erschaffen = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Erschaffen.gif")
    $btn_exit = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\close1.gif")
    $feld1 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Feld.gif")
    $feld2 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Feld.gif")
    $feld3 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Feld.gif")
    $feld4 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Feld.gif")
    $feld5 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Feld.gif")
    $feld6 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\Feld.gif")
    $graphic = _GDIPlus_GraphicsCreateFromHWND($Form1)
    $bitmap = _GDIPlus_BitmapCreateFromGraphics(700, 500, $graphic)
    $buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
    $iTimer = TimerInit()
    While 1
    ;===========Buttons==============================;
    $mouse = GUIGetCursorInfo()
    If IsArray($mouse) Then
    If $mouse[0] >= 520 And $mouse[1] <= 25 Then
    $btn_exit = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\close2.gif")
    Else
    $btn_exit = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\PICS\close1.gif")
    EndIf
    EndIf
    ;================ENDE=============================;
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    If TimerDiff($iTimer) > 100 Then
    Select
    Case _IsPressed(25) And $x > 0
    $x -= 40
    Case _IsPressed(26) And $y > 0
    $y -= 40
    Case _IsPressed(27) And $x < 340
    $x += 40
    Case _IsPressed(28) And $y < 340
    $y += 40
    EndSelect
    $iTimer = TimerInit()
    EndIf
    _GDIPlus_GraphicsDrawImageRect($buffer, $erschaffen, 440, 60, 120, 120)
    _GDIPlus_GraphicsDrawImageRect($buffer, $bk, 0, 0, 400, 400)
    _GDIPlus_GraphicsDrawImageRect($buffer, $Player, $x, $y, 40, 40 * $verhaelnis)
    _GDIPlus_GraphicsDrawImageRect($buffer, $load_bk, 80, 450, 220, 40)
    _GDIPlus_GraphicsDrawString($graphic, "LP/" & $Leben, 0, 460)
    _GDIPlus_GraphicsDrawImageRect($buffer, $btn_exit, 560, 0, 40, 40)
    _GDIPlus_GraphicsDrawImageRect($buffer, $load, 90, 460, $Leben * 2, 20)
    _GDIPlus_GraphicsDrawImageRect($buffer, $feld1, 440, 200, 60, 60)
    _GDIPlus_GraphicsDrawImageRect($buffer, $feld2, 440, 270, 60, 60)
    _GDIPlus_GraphicsDrawImageRect($buffer, $feld3, 440, 340, 60, 60)
    _GDIPlus_GraphicsDrawImageRect($buffer, $feld4, 510, 200, 60, 60)
    _GDIPlus_GraphicsDrawImageRect($buffer, $feld5, 510, 270, 60, 60)
    _GDIPlus_GraphicsDrawImageRect($buffer, $feld6, 510, 340, 60, 60)
    _GDIPlus_GraphicsDrawImage($graphic, $bitmap, 0, 0)
    WEnd
    Func _end()
    _GDIPlus_GraphicsDispose($graphic)
    _GDIPlus_GraphicsDispose($buffer)
    _GDIPlus_BitmapDispose($bitmap)
    _GDIPlus_ImageDispose($Player)
    _GDIPlus_ImageDispose($bk)
    _GDIPlus_Shutdown()
    EndFunc ;==>_end

    [/autoit]
  • Oh danke! :D Ich hatte mir den Code gar nicht angeschaut... :pinch:

    Da es hier doch einige falsch machen:

    Zitat von einem User dieses Forums

    Die Standard-Standart eines Flamingos ist einbeinig. ;)