Die Funktion der Buffers

  • Also ich weiss wie man so eine Art "spiel" macht aber hab keine Ahung wie das mit dem Buffer funktioniert.
    Ich möchte das wenn die "Figur" gegen den Balken trifft man von vorne anfangen muss

    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)
    _GDIPlus_GraphicsDrawImageRect($buffer1,$balken,25, 30, 100, 10)
    _GDIPlus_GraphicsDrawImageRect ($buffer1, $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][/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]

    Bitte um schnelle Hilfe

    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

    Einmal editiert, zuletzt von BadBunny (4. Juni 2010 um 19:08)

  • mir das vllt leicht verständlich zu erklären ... ich hab mir das beispiel angeschaut weiss aber nicht was man dann in dem fall von meinem script eintragen muss...

    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

  • Och komm....
    Das werden einem so gute Tut`s zur Verfügung gestellt und die Leute wollens wieder nur eingebaut bekommen :(
    Was genau verstehste denn nicht wenn du schon Hilfe willst dann schilder dein Problem etws genauer :whistling:

    [autoit]

    $buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
    $buffer1 = _GDIPlus_ImageGetGraphicsContext($bitmap)

    [/autoit]

    DoppelBitmap???

    MfG Hellboy

    MfG hellboy

    [autoit]

    Do
    _help($user)
    Until $questions = 0

    [/autoit]

    Meine Werke:
    Ste`s Web-Radio

  • Ich tippe er hat sich nicht die Mühe gemacht es anzuschauen.
    Und in so einem Fall kannst du echt keine hilfe erwarten.
    Ohne eigeninitiative geht es nicht.

    Ansonsten sag WAS du nicht verstanden hast.

    Und du kannst schon mal gar nicht erwarten das wir dir einfach ein Script schreiben.
    Das gehört dann in die Jobbörse.

    mfg Ubuntu

  • ich hab mit das angeschaut und was ich nicht verstanden hab war :

    Spoiler anzeigen
    [autoit]

    $iX += $vX
    $iY += $vY
    If $iX >= 380 Or $iX <= 0 Then $vX *= -1
    If $iY >= 325 Or $iY <= 0 Then $vY *= -1

    [/autoit]


    das ist glaube ich das was ich suche.
    Etwas, was einen bestimten befehl ausführt wenn die figur sich an eine rbestimmten stelle befindet oder auf einer bestimmten fläsche

    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

  • Das hat nichts mit dem Buffer zu tun.

    Die richtige stelle ist
    Vom Abschnitt "Zur Funktion der Buffers"
    bis direkt über dem was du gepostet hast.
    Hättest du genau gelsen hättest du gesehen das darüber steht.
    Bitte nicht nur bruchstückhaft lesen sondern einen Abschnitt aber dafür ganz.

    Zitat

    Nun könnten wir unser spiel noch weiter verbessern indem wir logische beschränkungen einbauen.

    Wie es z.B. im Beispiel zu Buffern gemacht wurde.

    mfg Ubuntu

  • also dieser befehl
    $buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)


    ist der buffer aber wie kann ich mit dem einstellen, das bei einer bestimmten stelle / fläsche fals die figur darauf kommt

    was passiert??? wie man sehen kann hatte ich diesen buffer auch in meinem script verwendet.

    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

  • oder muss man dann sogesagt nochmal eine neue "kleinere" bitmap fläsche erstellen und dann so machen dass wenn diese kleinere fläsche "betreten wird" etwas passiert?

    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

  • Zitat

    ist der buffer aber wie kann ich mit dem einstellen, das bei einer bestimmten stelle / fläsche fals die figur darauf kommt

    was passiert???


    das kannst du nicht einstellen
    das hat garnix mit dem buffer zu tun
    der buffer dient NUR zum zeichnen NICHT um festzustellen ob iwas in auf ihm ist
    du musst eigentlich nur herrausfinden wan $x und $y am richigen ort sind
    und das muste halt berechnen

  • Alles steht im Tutorial.

    Ich könnts dir sogar aus dem Kopf zitieren aber ich hab da jetzt echt keine Lust mehr drauf.

    mfg Ubuntu

  • Wie oft müssen wir dich noch auf die Bearbeiten Funktion hinweisen? :cursing:
    Dieser Befehl

    [autoit]

    $buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)

    [/autoit]

    erzeugt eine Grafik aus einem Bild Objekt so, dass man hineinzeichnen kann.
    Beim Buffering geht es darum die Zeichenvorgänge die teilweise ein wenig Zeit beanspruchen im Hintergrund zu erledigen und erst danach das Bild auf den sich der Backbuffer bezieht auf die GUI zu zeichnen.

  • Nagut wenn das nicht das ist was ich suche , kann mir dann jemand sagen was ich such???!!!
    Oder vllt dieses ding was ich suche mal in meinen script einbauen fals das möglich ist.

    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)
    _GDIPlus_GraphicsDrawImageRect($buffer1,$balken,25, 30, 100, 10)
    _GDIPlus_GraphicsDrawImageRect ($buffer1, $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][/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]

    Ich hoffe das ist nicht zuviel arbeit das darein zu pflanzen weil sonst braucht ihrs nicht machen.

    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