GDI+ Figur bewegen mit Bildwechsel

  • Hi @ all, ich hab mich in den letzten Tagen recht intensiv mit GDI+ beschäftigt und hatte auch dank Ubuntus Tut erste kleine Erfolge :D
    Ich bastel gerade an einem Spiel im RPG-Style sprich Zelda,Pokemon was weiß ich :P
    Naja ich dachte mir vielleicht interessierts manche Anfänger wie sie das mit dem Bildwechsel vor der Bewegung anstellen , ich poste jetzt
    einfach das Grundgerüst von meinem Spiel (das momentane script ist schon sehr stark abgeändert), es ist einfach Ubuntu`s GDI+ Tut-Script nur etwas abgeändert , wiegesagt nichts besonderes aber es kann ja helfen/nicht schaden.
    Die Bilder und das Script findet ihr im Anhang ;)

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>
    #include <GdiPlus.au3>;das include
    #include <Misc.au3>

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

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

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

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

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

    Global $GUI_Width = 400
    Global $GUI_Height = 380

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

    Global $movespeed = 6

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

    ;----Bilder laden---------------------
    Global $Figur_unten = _GDIPlus_ImageLoadFromFile(@ScriptDir &"/Bilder/figur_unten.gif")
    Global $Figur_oben = _GDIPlus_ImageLoadFromFile(@ScriptDir &"/Bilder/figur_oben.gif")
    Global $Figur_rechts = _GDIPlus_ImageLoadFromFile(@ScriptDir &"/Bilder/figur_rechts.gif")
    Global $Figur_links = _GDIPlus_ImageLoadFromFile(@ScriptDir &"/Bilder/figur_links.gif")
    Global $bk = _GDIPlus_ImageLoadFromFile(@ScriptDir & "/Bilder/bck.png")

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

    $Gui = GUICreate("GDI+ Beispiel / Tutorial", $GUI_Width, $GUI_Height, 300,100)
    $height = _GDIPlus_ImageGetHeight($Figur_unten)
    $width = _GDIPlus_ImageGetWidth($Figur_unten)
    $verhaelnis = $height / $width
    $graphic = _GDIPlus_GraphicsCreateFromHWND($Gui);Frontbuffer
    $bitmap = _GDIPlus_BitmapCreateFromGraphics($GUI_Width, $GUI_Height, $graphic)
    $buffer = _GDIPlus_ImageGetGraphicsContext($bitmap);Backbuffer
    Global $aktuelleFigur = $Figur_unten
    GUISetState(@SW_SHOW)

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

    While 1

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

    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch

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

    Select

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

    Case _IsPressed(25) and not $x <= 0; ------------- geändert -------------
    $x -= $movespeed
    $aktuelleFigur=$Figur_links

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

    Case _IsPressed(27) and $x <= $GUI_Width-41; ------------- geändert -------------
    $x += $movespeed
    $aktuelleFigur=$Figur_rechts

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

    Case _IsPressed(26) and not $y <= 0; ------------- geändert -------------
    $y -= $movespeed
    $aktuelleFigur=$Figur_oben

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

    Case _IsPressed(28) and $y <= $GUI_Height-80; ------------- geändert -------------
    $y += $movespeed
    $aktuelleFigur=$Figur_unten
    EndSelect

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

    _Draw()

    [/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)
    ;Bilder freigeben
    _GDIPlus_ImageDispose($Figur_oben)
    _GDIPlus_ImageDispose($Figur_unten)
    _GDIPlus_ImageDispose($Figur_rechts)
    _GDIPlus_ImageDispose($Figur_links)
    _GDIPlus_ImageDispose($bk)
    _GDIPlus_Shutdown();Ressourcen freigeben
    EndFunc

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

    Func _Draw()
    _GDIPlus_GraphicsClear($buffer);Inhalt des Backbuffer`s wird gelöscht
    _GDIPlus_GraphicsDrawImageRect($buffer,$bk,0,0,$GUI_Width, $GUI_Height)
    _GDIPlus_GraphicsDrawImageRect($buffer,$aktuelleFigur,$x,$y,40,40 * $verhaelnis)
    _GDIPlus_GraphicsDrawImage($graphic, $bitmap, 0, 0) ;Backbuffer wird an den Frontbuffer übergeben
    ;Sleep(30)
    EndFunc

    [/autoit]
  • Hi @ all, ich hab mich in den letzten Tagen recht intensiv mit GDI+ beschäftigt und hatte auch dank Ubuntus Tut erste kleine Erfolge :D


    Das freut mich :)


    Echt gut für einen Anfänger :thumbup:

    Vielleicht übernehm ichs in abgeänderter form ins Tut. ^^

    mfg Ubuntu

  • Zitat

    Ich glaube die ironie wird nicht jeder erkennen ;)

    Das ist keine Ironie :D yxyx hilf mir immer wenn ich nicht weiterkomme und er kennt das aktuelle Script ;)

    MfG Hellboy

    MfG hellboy

    [autoit]

    Do
    _help($user)
    Until $questions = 0

    [/autoit]

    Meine Werke:
    Ste`s Web-Radio

  • Ok ich habs mir jetzt genauer angeschaut und gesehen das wirklich recht viel abgeändert ist.
    Am anfang hab ich nur flüchtig drüber geguckt und nur mein Script mit ein paar Images und einer Logik mehr gesehen.

    Sorry für das voreilige Urteil.

    mfg Ubuntu

  • Nene Ubuntu :D Das Script was ich hier gepostet habe ist dein Tut nur leicht abgeändert, aber das Script an dem ich momentan schreibe
    ist schon stark abgeändert das meinte ich damit :)
    Hab mich weng dumm ausgedrückt xD

    MfG hellboy

    MfG hellboy

    [autoit]

    Do
    _help($user)
    Until $questions = 0

    [/autoit]

    Meine Werke:
    Ste`s Web-Radio

  • Achso jetzt ergibt das einen Sinn ^^

    Einigen wir uns auf mittel abgeändert :D

    mfg Ubuntu