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
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Niccoo

Beiträge von Niccoo

  • Mehrere Gegner Bewegungen

    • Niccoo
    • 12. April 2012 um 14:30

    Bei mir flakert es jetzt auch :/

  • Mehrere Gegner Bewegungen

    • Niccoo
    • 12. April 2012 um 11:58

    Danke, die TuT habe ich mir nachher auch durchgelesen & ich habe das spiel sogar schon ein paar schritte weiter. Devolper hat mir geholfen sogar noch die schüsse der Armbrust einzubauen B-)

    Aber irgendwie hängt das Skript noch ein wenig und die Gegner verschwinden ab und an einfach mal so... Wir wissen jetzt leider nicht wo dran es liegen könnte.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GDIPlus.au3>
    #include <Misc.au3>
    #include <Array.au3>

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

    Opt('GUICloseOnESC', 0) ; Beenden mit Esc ?
    Opt('GUIOnEventMode', 1) ; Event Mode
    Opt('MustDeclareVars', 1) ; Variablen müssen deklariert werden. (sauberes Programmieren nötig)
    Opt('MouseCoordMode', 2) ; Mauskoordinaten relativ zum Fenster

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

    Global Const $iBreite = 800, $iHoehe = 400, $iReihen = 10

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

    ; Bei 10 Reihen ist oben und unten jeweils eine halbe Reihe Luft. Daher sind nur 9 verfügbar. (Reihe 1 bis 9)

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

    Global $hGUI, $hGFX, $hBMP, $hBUF, $hBrush[8], $hPen[1]

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

    Global $ibegin = TimerInit()

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

    Global $Gegner[1][3]
    ; 0 = X - Koordinate
    ; 1 = Y - Koordinate
    ; 2 = Farbe (eine Zahl für die Brush)
    Global $Pfeil[1][2][2]
    ;~ für erste dimension wert 1, da noch kein pfeil existiert und 1 der minimalwert ist
    ;~ für zweite dimension 2, weil es 2 positionen gibt, die zu speichern sind
    ;~ und für dritte dimension auch 2, weil es x uns y position gibt..
    ;~ [x][0][0] = x ziel position
    ;~ [x][0][1] = y ziel position
    ;~ [x][1][0] = aktuelle x position
    ;~ [x][1][1] = aktuelle y position

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

    _GDIPlus_Startup()

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

    $hGUI = GUICreate("Defender", $iBreite, $iHoehe)
    $hGFX = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    $hBMP = _GDIPlus_BitmapCreateFromGraphics($iBreite, $iHoehe, $hGFX)
    $hBUF = _GDIPlus_ImageGetGraphicsContext($hBMP)

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

    $hBrush[0] = _GDIPlus_BrushCreateSolid(0xFF00592A) ; Weiss
    $hBrush[1] = _GDIPlus_BrushCreateSolid(0xFF91AAB9) ; Armbrust
    $hBrush[2] = _GDIPlus_BrushCreateSolid(0xFF630304) ; Gegner 1
    $hBrush[3] = _GDIPlus_BrushCreateSolid(0xFF2E5B92) ; Gegner 2
    $hBrush[4] = _GDIPlus_BrushCreateSolid(0xFFFDD00A) ; Gegner 3
    $hBrush[5] = _GDIPlus_BrushCreateSolid(0xFF65583A) ; Gegner 4
    $hBrush[6] = _GDIPlus_BrushCreateSolid(0xFF000000) ; Gegner 5
    $hBrush[7] = _GDIPlus_BrushCreateSolid(0xFF540072) ; Schuss der Armbrust

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

    $hPen[0] = _GDIPlus_PenCreate(0xFF91AAB9, 4)

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

    _GDIPlus_GraphicsSetSmoothingMode($hBUF, 4)

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

    GUISetOnEvent(-3,'___Exit', $hGUI) ; Exit
    OnAutoItExitRegister('_Freigeben') ; Beim Beenden auch alle Ressourcen freigeben.
    GUIRegisterMsg(0xF, 'WM_PAINT') ; Neu Zeichnen, wenn Windows das gerne so hätte...
    GUISetState(@SW_SHOW)

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

    _AddGegner(Random(1, 9, 1))

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

    While 1

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

    _GDIPlus_GraphicsClear($hBUF, 0xFF00592A)

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

    _AddPfeil()
    _ZeichnePfeil()
    _ZeichneGegner()
    _ZeichneArmbrust()
    If UBound($Gegner) < 15 And Not Random(0, 10, 1) Then _AddGegner(Random(1, 9, 1))
    ; ToolTip('Anzahl Gegner: ' & UBound($Gegner))

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

    WM_PAINT()
    Sleep(5)

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

    WEnd

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

    Func _ZeichneArmbrust()

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

    _GDIPlus_GraphicsFillEllipse($hBUF, -25, $iHoehe/2-25, 50, 50, $hBrush[1])

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

    EndFunc

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

    Func _ZeichneGegner()
    Local $iUbound = UBound($Gegner) ; So viele gegner gibt es !
    Local $aKlon[1] ; Klon Array.
    Local $i = 1 ;Im 0ten Array steht nix. Daher wird bei 1 begonnen.
    While ($i <= UBound($Gegner)-1)
    $Gegner[$i][0] -= 2 ; Bewegen in X Richtung
    If $Gegner[$i][0] <= - 50 Then ; Wenn der Gegner hinten ist, wird er gelöscht.
    _ArrayAdd($aKlon,$i)
    ; $i -= 1
    EndIf
    $i+=1
    _CheckPfeilGegner()
    WEnd
    _DelGegner($aKlon)
    EndFunc

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

    Func _CheckPfeilGegner()
    Local $iUbound = UBound($Gegner)
    Local $bUbound = UBound($Pfeil)
    Local $aKlon[1]
    Local $bKlon[1]

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

    For $i = 1 To $iUbound - 1 Step 1
    For $b = 1 To $bUbound - 1 Step 1
    If $Pfeil[$b][0][0] > $Gegner[$i][0] - 40 and $Pfeil[$b][0][0] < $Gegner[$i][0] + 40 And $Pfeil[$b][1][0] > $Gegner[$i][1] - 40 and $Pfeil[$b][1][1] < $Gegner[$i][1] + 40 Then
    _ArrayAdd($aKlon,$i)
    _ArrayAdd($bKlon,$b)
    _GDIPlus_GraphicsFillEllipse($hBUF, $Gegner[$i][0]-25, $Gegner[$i][1]-25, 50, 50, $hBrush[$Gegner[$i][2]])
    Else
    _GDIPlus_GraphicsFillEllipse($hBUF, $Gegner[$i][0]-25, $Gegner[$i][1]-25, 50, 50, $hBrush[$Gegner[$i][2]])
    EndIf
    Next
    Next
    _DelGegner($aKlon)
    _DelPfeil($bKlon)
    EndFunc

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

    Func _ZeichnePfeil()
    Local $iUbound = UBound($Pfeil) ; so viele Pfeile gib es
    Local $aKlon[1] ; Klon
    Local $iYSchrit

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

    For $i = 1 To $iUbound - 1 Step 1

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

    $iYSchrit = ($Pfeil[$i][1][1] - 200) / ($Pfeil[$i][1][0] - 0)
    $Pfeil[$i][0][0] += 1*10 ;x wird um einen schrit erhöht
    $Pfeil[$i][0][1] += $iYSchrit*10 ;y wird erhöht

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

    If $Pfeil[$i][0][0] < 0 or $Pfeil[$i][0][0] > $iBreite or $Pfeil[$i][0][1] < 0 or $Pfeil[$i][0][1] > $iHoehe Then
    _ArrayAdd($aKlon,$i)
    EndIf

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

    _GDIPlus_GraphicsFillEllipse($hBUF, $Pfeil[$i][0][0] - 20, $Pfeil[$i][0][1] -20, 25, 25, $hBrush[7])

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

    Next

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

    _DelPfeil($aKlon)

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

    EndFunc

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

    Func _AddGegner($Reihe)

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

    Local $iUbound = UBound($Gegner) ; Wie viele Gegner gibt es ?
    ReDim $Gegner[$iUbound+1][UBound($Gegner, 2)] ; Jetzt gibt es einen Mehr !

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

    $Gegner[$iUbound][0] = $iBreite + 50 ; x
    $Gegner[$iUbound][1] = Int(($iHoehe/$iReihen)*$Reihe) ; y
    $Gegner[$iUbound][2] = Random(2,6,1) ; Farbe

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

    EndFunc

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

    Func _AddPfeil()
    Local $ikoordis = GUIGetCursorInfo($hGUI)
    Local $iUbound = UBound($Pfeil)
    If TimerDiff($ibegin)>750 then
    $ibegin = TimerInit()
    ReDim $Pfeil[$iUbound+1][UBound($Pfeil, 2)][UBound($Pfeil, 3)]

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

    $Pfeil[$iUbound][0][0] = 0 ;die x jetzt koordinate
    $Pfeil[$iUbound][0][1] = 200 ;die y jetzt koordinate
    $Pfeil[$iUbound][1][0] = $ikoordis[0] ;die x end koordinate
    $Pfeil[$iUbound][1][1] = $ikoordis[1] ;die y end koordinate
    EndIf
    EndFunc

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

    Func _DelGegner(ByRef $aKlon) ; Es können ja auch mal 2 Gegner gleichzeitig sterben. Daher wird ein Klonarray eingeführt, welches aber nur nullen enthält.
    For $i = 1 To UBound($aKlon) - 1 ; Ist ein Gegner Tot wird dieser Wert auf 1 gesetzt.
    _ArrayDelete($Gegner, $aKlon[$i])
    Next
    EndFunc ;==>_DeleteGegner

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

    Func _DelPfeil(ByRef $aKlon)
    For $i =1 to UBound($aKlon)-1 ; Ist ein Gegner Tot wird dieser Wert auf 1 gesetzt.
    if UBound($aKlon)>1 Then
    for $x = 0 to UBound($Pfeil,2) - 1
    for $y = 0 to UBound($Pfeil,2) - 1
    $Pfeil[$aKlon[$i]][$x][$y]=$Pfeil[UBound($Pfeil)-1][$x][$y]
    Next
    Next
    ReDim $Pfeil[UBound($Pfeil)-1][UBound($Pfeil,2)][UBound($Pfeil,3)]
    EndIf

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

    Next
    EndFunc ;==>_DeletePfeil

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

    Func WM_PAINT()
    _GDIPlus_GraphicsDrawImage($hGFX, $hBMP, 0, 0)
    EndFunc

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

    Func _Freigeben()

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

    _GDIPlus_GraphicsDispose($hBUF)
    _GDIPlus_BitmapDispose($hBMP)
    _GDIPlus_GraphicsDispose($hGFX)

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

    For $i = 0 To UBound($hBrush) - 1 Step 1
    _GDIPlus_BrushDispose($hBrush[$i])
    Next

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

    For $i = 0 To UBound($hPen) - 1 Step 1
    _GDIPlus_PenDispose($hPen[$i])
    Next

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

    _GDIPlus_Shutdown()

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

    EndFunc

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

    Func ___Exit()
    Exit
    EndFunc

    [/autoit]

    Ich hoffe, es findet einer wodran es liegen könnte :/

  • Mehrere Gegner Bewegungen

    • Niccoo
    • 11. April 2012 um 20:02

    Wohoooaa richtig gut *.* werde aber jz erstmal schauen, ob ich dein skript durchblinke :wacko:

  • Mehrere Gegner Bewegungen

    • Niccoo
    • 11. April 2012 um 18:18

    Hey,

    Ich bin noch seeeehr neu auf dem gebiet von GDIPlus & habe mich vorher auch noch nicht sooo stark Mit Select beschäftig, doch ich wollte gerne so ein Defender Spiel nachmachen (vom Androit handy, später vll sogar Defender2 :whistling: ). Da ich mich damit noch nicht so gut auskenne, wollte ich erstmal so wein wenig rumspielen & soo, erstmal schauen wie man es schaft mehrere "Gegner" (kreise) gleichzeitig bewegen zu lassen.

    Ich wollte eig. das die gegner (erstmal nur einen) auf verschiedenen linien unterschiedlich spawnen, also nicht immer der ganz oben zuerst. Aber wenn bereits der Gegner1 auf dem spielfeld ist, soll er sich dauerhaft weiter bewegen. Doch bei meinem Skript, Spawnt NUR der erste gegner & bewegt sich zum ziel, danach der 2te.. 3te.. Ich weiß leider nicht was ich falsch mache


    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include<GDIPlus.au3>
    #include<Misc.au3>

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

    OnAutoItExitRegister("_EXIT")

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

    $x1 = 850 ;mit x will ich vll. später noch mal arbeiten und da ich mich mit arrays auch noch nicht soo gut kan, erstmal so gelöst, vll kan es mir ja sogar einer erklären ;)
    $y1 = 25
    $x2 = 850
    $y2 = 100
    $x3 = 850
    $y3 = 175
    $x4 = 850
    $y4 = 250
    $x5 = 850
    $y5 = 325
    $SGegner1 = False
    $SGegner2 = False
    $SGegner3 = False
    $SGegner4 = False
    $SGegner5 = False

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

    _GDIPlus_Startup()

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

    $Gui = GUICreate("Defender", 800, 400)
    $graphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
    $bitmap = _GDIPlus_BitmapCreateFromGraphics(800, 400, $graphic)
    $buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)

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

    $brushWeiss = _GDIPlus_BrushCreateSolid(0xFF00592A)
    $brushArmbrust = _GDIPlus_BrushCreateSolid(0xFF91AAB9)
    $brushGegner1 = _GDIPlus_BrushCreateSolid(0xFF630304)
    $brushGegner2 = _GDIPlus_BrushCreateSolid(0xFF2E5B92)
    $brushGegner3 = _GDIPlus_BrushCreateSolid(0xFFFDD00A)
    $brushGegner4 = _GDIPlus_BrushCreateSolid(0xFF65583A)
    $brushGegner5 = _GDIPlus_BrushCreateSolid(0xFF000000)

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

    GUISetState(@SW_SHOW)

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

    While 1
    $RGegner = Random(1,5,1)
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $RGegner = 1 and $SGegner1 = false
    $x1 -= 2
    $SGegner1 = True
    Case $RGegner = 2 and $SGegner2 = false
    $x2 -= 2
    $SGegner2 = True
    Case $RGegner = 3 and $SGegner3 = false
    $x3 -= 2
    $SGegner3 = True
    Case $RGegner = 4 and $SGegner4 = false
    $x4 -= 2
    $SGegner4 = True
    Case $RGegner = 5 and $SGegner5 = false
    $x5 -= 2
    $SGegner5 = True
    Case $SGegner1 = True and $x1 >= -25
    $x1 -= 2
    Case $SGegner2 = True and $x2 >= -25
    $x2 -= 2
    Case $SGegner3 = True and $x3 >= -25
    $x3 -= 2
    Case $SGegner4 = True and $x4 >= -25
    $x4 -= 2
    Case $SGegner5 = True and $x5 >= -25
    $x5 -= 2
    EndSelect
    _GDIPlus_GraphicsFillRect($buffer, 0, 0, 800, 400, $brushWeiss)
    _GDIPlus_GraphicsFillEllipse($buffer, $x1, $y1, 50, 50, $brushGegner1)
    _GDIPlus_GraphicsFillEllipse($buffer, $x2, $y2, 50, 50, $brushGegner2)
    _GDIPlus_GraphicsFillEllipse($buffer, $x3, $y3, 50, 50, $brushGegner3)
    _GDIPlus_GraphicsFillEllipse($buffer, $x4, $y4, 50, 50, $brushGegner4)
    _GDIPlus_GraphicsFillEllipse($buffer, $x5, $y5, 50, 50, $brushGegner5)
    _GDIPlus_GraphicsFillEllipse($buffer, -25, 200, 50, 50, $brushArmbrust)
    _GDIPlus_GraphicsDrawImageRect($graphic, $bitmap, 0, 0, 800, 400)
    WEnd

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

    Func _EXIT()
    _GDIPlus_GraphicsDispose($graphic)
    _GDIPlus_GraphicsDispose($buffer)
    _GDIPlus_BitmapDispose($bitmap)
    _GDIPlus_Shutdown()
    EndFunc

    [/autoit]

    So bewegt er sie nur einzelnd, von oben nach unten, aber wenn ich den 2ten teil weg lase also das hier:

    Spoiler anzeigen
    [autoit]

    Case $RGegner = 5 and $SGegner5 = false
    $x5 -= 2
    $SGegner5 = True
    Case $SGegner1 = True and $x1 >= -25
    $x1 -= 2
    Case $SGegner2 = True and $x2 >= -25
    $x2 -= 2
    Case $SGegner3 = True and $x3 >= -25
    $x3 -= 2
    Case $SGegner4 = True and $x4 >= -25
    $x4 -= 2
    Case $SGegner5 = True and $x5 >= -25
    $x5 -= 2

    [/autoit]

    fängt er zufällig an, aber sie bewegen sich nicht konstant.

    Ich bitte um hilfe :(((

  • GDIPlus Jpg`s/gif`s übermalen

    • Niccoo
    • 9. April 2012 um 21:10

    Okeee, ich mache ein mini mini mini mini mini TD :D die tower müssen sich nicht bewegen & ich werde mich jz erstmal dransetzten alles ans laufen zu bringen (dafuq ?!?! :D)

    Ist es den besser die gesamte Map in Quadraten aufzuteilen um die dan zu übermalen als gleich so ein gesamtes bild zu haben? & ich denke ich fange erstmal klein an und versuche es erstmal damit meinen Gegner übermalt zu bekommen :pp & danach 2 gegner zum laufen zu bringen & mich dan erst mit den Towern befassen.

    DANKE :thumbup:

  • GDIPlus Jpg`s/gif`s übermalen

    • Niccoo
    • 9. April 2012 um 20:25

    Besten, besten, besten dank! Doch ich gebe erlich zu, ich bin nicht so der typ der sich in tausend sachen reinliest um dan erst mit der programmierung anzufangen :D Aber wenn ich das hintergrundbild neu lade, dan sind (Theoretisch gesehen) die Tower, die vom spieler draufgesetzt wurden ja eig. auch mit weg. Die müsste ich dan ja auch wieder neuladen. Nur als beispiel: er hat 3 Tower. Diese sind auf dem spielfeld verteilt. Dan müsste ich ja vorher in einem Array speichern wo die ganzen Tower stehen & welche & die dan auch wieder neuladen.

    Wenn ich das bis hier jz. richtig verstanden habe & dan da ca. 20-30 (oder vieeeeel mehr) monster rum laufen sollen und dan da noch Tower stehen (auch so 15-20) und ich muss nach jedem Gekillten monster die Map wieder neu laden, sicher das es dan nicht anfängt zu hängen? Nicht das ich da jz zuviel hoffnung reinstecke, das es alles so geht wie ich will & es dan nachher doch nicht tut ;(

  • GDIPlus Jpg`s/gif`s übermalen

    • Niccoo
    • 9. April 2012 um 20:00

    Hey,

    Ich wollte gerne mein eigendes Defender spiel schreiben, mein erster versuch war einfach nur mit GUICtrlSetPos doch das flakern hat mich aufgeregt. Deswegen habe ich googelt wie man es lösen kan & ich kam zu GDIPlus. Ich habe bereits ein Hintergrund, wo die Gegner herlaufen, und auch bereits einen gegner der die strecke lang läuft. Doch leider läst er sich ja nicht löschen, wenn ich ihn gekillt habe oder er durch gekommen ist. Ich weiß auch nicht wie ich ihn auf den hintergrund übermalen kan...

    Spoiler anzeigen


    http://s14.directupload.net/file/d/2855/vymfj5r9_jpg.htm

    http://s7.directupload.net/file/d/2855/kiw4perf_png.htm

    http://s14.directupload.net/file/d/2855/wjkeo2k9_png.htm

    Das sind bilder von dem Spiel, der code:

    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
    Opt("GUIOnEventMode", 1)
    HotKeySet("{ENTER}","_WaveStart")
    Global $GegnerX = -50
    Global $GegnerY = 79
    Global $Start = False

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

    $Gui = GUICreate("Beispiel", 1000, 600)
    GUISetState(@SW_SHOW)

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

    _GDIPlus_Startup() ;Gdi starten

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

    $Map = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Map.jpg")
    $graphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
    _GDIPlus_GraphicsDrawImageRect($graphic, $Map, 0, 0, 800, 600) ;die Figur wird an der neuen Position gezeichnet
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($Gui);noramle Grafik erstellen
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(800, 600, $hGraphic);Buffer erstellen Schritt 1...
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap);...und 2
    GUISetOnEvent($GUI_EVENT_CLOSE, "_end")

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

    While 1
    If $Start = True Then
    _Move()
    _GDIPlus_GraphicsDrawImageRect($hBuffer, $Map, 0, 0, 800, 600);mit Buffer
    _GDIPlus_GraphicsDrawImageRect($hBuffer, $Gegner, $GegnerX, $GegnerY, 50, 50)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, 800, 600)
    EndIf
    WEnd

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

    Func _Move()
    if $GegnerX >= 635 and $GegnerY >= 436 Then
    _GDIPlus_GraphicsClear($hBuffer, 0xFF000000 + 0xF0F0F0)
    ElseIf $GegnerY = 79 and $GegnerX <= 648 Then
    $GegnerX = $GegnerX + 4
    ElseIf $GegnerX = 650 and $GegnerY <= 240 Then
    $GegnerY = $GegnerY + 4
    ElseIf $GegnerY = 243 and $GegnerX >= 115 Then
    $GegnerX = $GegnerX - 4
    ElseIf $GegnerX = 114 and $GegnerY <= 435 Then
    $GegnerY = $GegnerY + 4
    ElseIf $GegnerY = 439 and $GegnerX <= 637 Then
    $GegnerX = $GegnerX + 4
    EndIf
    EndFunc

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

    Func _WaveStart()
    HotKeySet("{ENTER}")
    Global $Gegner = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Gegner1.jpg")
    _GDIPlus_GraphicsDrawImageRect($hBuffer, $Gegner, $GegnerX, $GegnerY, 20, 20)
    $Start = True
    EndFunc

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

    Func _end();die Exit funktion
    _GDIPlus_GraphicsDispose($graphic);Grafik Objekt freigeben
    _GDIPlus_ImageDispose($Map);Bild Objekt freigeben
    _GDIPlus_Shutdown();Ressourcen freigeben
    Exit
    EndFunc ;==>_end

    [/autoit]

    Da ich heute erst mit GDIPlus angefangen sind stamm viel aus dem Tut hier im forum ;)

    & Meine 2te frage, ist es möglich mehrere Gegner ans laufen zu bringen? Mit einem ist das ja zimlich langweilig :thumbdown:

    MfG Nico

  • Hintergrundsbilder, Transparente bilder

    • Niccoo
    • 9. April 2012 um 19:10

    Danke, ich habe mich jz mit GDI plus beschäftigt und versuche es damit, doch leider kenne ich mich damit 0 aus :D habe mir bereits das tut durchgelesen und verstehe zumindest jz etwas...

    Ich verusche mein eigendes Defender spiel zu machen, mit mehreren modis. Da ich mit dem START bildschrim nicht wieter kam :rolleyes: bin ich mit der spiel programmierung angefangen. Ich hatte mit selbst die bilder erstellt. Ich lade mal skript mit bildern hoch.

  • Hintergrundsbilder, Transparente bilder

    • Niccoo
    • 9. April 2012 um 15:23

    Hey, ich habe leider die daten von meinem Alten acc auf diesem forum vergessen & habe mir deswegen einen neuen machen müssen :(

    Naja, ich versuche ein spiel zu erstellen, doch leider scheiter es schon am ersten GUI ^.^. Ich wollte gerne eine GUI erstellen, wo ein hintergrundsbild drin ist, das GUI soll immer @DesktopWidth, @DesktopHight sein also vollbild modus. Das klappt auch bisher, da das hintergrundbild ein JGP ist. (es verändert auch die größe bie unterschidlich großen Monitoren richtig). Doch dan wollte ich so schriftzuüge drauf machen, wie "Spiel Starten" diese habe ich mir selbst mit GIMP erstellt. Alles außer der Schrift ist Transparent & daher musste ich es als .gif abspeichern.

    Ich habe die SuFu bereits genutz und bin auch drauf gekommen das man child guis erstellen muss, & ich hatte es auch einmal richtig an der stelle wo es sein sollte, doch leider nur bei mir auf dem bildschirm. Bei den anderen ist es dan an der falschen stelle. Ich weiß nicht mehr weiter, immer wenn ich die Koordinaten ändere, wo das gif sein soll, entsteht ein weißer rand in meiner "main" gui. Da es zur zeit wirklich nur Teste sind, ist das skript nicht sonderlich groß & ich verusche es ja auch erstmal mit den gui hinzubekommen ;(

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <WINAPI.au3>
    #include <StaticConstants.au3>

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

    Opt("GUIOnEventMode", 1)

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

    $GUI1 = GUICreate("Defender", @DesktopWidth, @DesktopHeight, -9, 0)
    $Bild = GUICtrlCreatePic (@ScriptDir & "\img19.jpg",0,0,0,0, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

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

    $pic = GUICreate("",100, 100, 500, 0, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $GUI1)
    GUICtrlCreatePic(@ScriptDir & "\Spiel Start.gif", 0, 0, 100, 100, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS),$WS_EX_TRANSPARENT )

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

    ;~ GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    GUISetState(@SW_SHOW, $pic)
    GUISetState(@SW_SHOW, $GUI1)

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

    While 1
    Sleep(50)
    WEnd

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]

    Da ich mich mit GUI+ überhaupt nicht auskenne & auch noch keinmal befasst habe, wollte ich ungerne darauf zurück greifen müssen...

    MfG Nico

    PS: das Hintergrundsbild ist leider zugröß zum hochladen, ich werde mal schauen wie ich es anders hochladen kann

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™