Mehrere Gegner Bewegungen

  • 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 :(((

    MfG Nico

    MfG - Mit freundlichen Grüssen

    die Welt liegt uns zu Füssen, den wir steh'n drauf

    wir geh'n drauf für ein Leben voller Schall und Rauch

    bevor wir fall'n, fall'n wir lieber auf.

  • Hey Niccoo,

    ich hab mal was mit deinem Script rumgespielt :D, paar Dinge geändert. Das hier ist bei rausgekommen:

    Spoiler anzeigen
    [autoit]

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

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

    OnAutoItExitRegister("_EXIT")
    AutoItSetOption("GUIOnEventMode", 1)

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

    _GDIPlus_Startup()

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

    Global $aGegner[1][3]
    Global $iGegnerWidth = 50, $iGegnerHeight = 50
    Global $aGegnerFarben[5] = [_GDIPlus_BrushCreateSolid(0xFF630304), _GDIPlus_BrushCreateSolid(0xFF2E5B92), _GDIPlus_BrushCreateSolid(0xFFFDD00A), _GDIPlus_BrushCreateSolid(0xFF65583A), _GDIPlus_BrushCreateSolid(0xFF000000)]
    Global $Gui, $graphic, $bitmap, $buffer, $brushWeiss, $brushArmbrust, $brushGegner1, $brushGegner2, $brushGegner3, $brushGegner4, $brushGegner5

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

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

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

    $brushWeiss = _GDIPlus_BrushCreateSolid(0xFF00592A)

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

    GUISetState(@SW_SHOW)

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

    While 1
    _SpawnEnemy(5) ; Gegner spawnen
    _Draw() ; Scene zeichnen
    WEnd

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

    Func _Draw()
    _GDIPlus_GraphicsFillRect($buffer, 0, 0, 800, 400, $brushWeiss)
    _DrawEnemies()
    _GDIPlus_GraphicsDrawImageRect($graphic, $bitmap, 0, 0, 800, 400)
    EndFunc ;==>_Draw

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

    Func _SpawnEnemy($iSpawnRate)
    If Random(0, 100, 1) < $iSpawnRate Then
    If $aGegner[0][0] <> "" Then ReDim $aGegner[UBound($aGegner) + 1][UBound($aGegner, 2)]
    $aGegner[UBound($aGegner) - 1][0] = 750
    $aGegner[UBound($aGegner) - 1][1] = Random(100, 300, 1)
    $aGegner[UBound($aGegner) - 1][2] = Random(0, UBound($aGegnerFarben) - 1, 1)
    EndIf
    EndFunc ;==>_SpawnEnemy

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

    Func _DrawEnemies()
    $i = 0
    While 1
    If $i >= UBound($aGegner) - 1 Then ExitLoop
    If String($aGegner[$i][0]) = "" Then ExitLoop
    $aGegner[$i][0] -= 2
    _GDIPlus_GraphicsFillEllipse($buffer, $aGegner[$i][0], $aGegner[$i][1], $iGegnerWidth, $iGegnerHeight, $aGegnerFarben[$aGegner[$i][2]])
    If $aGegner[$i][0] < -$iGegnerWidth Then ; Gegner löschen
    If UBound($aGegner) > 1 Then
    _ArrayDelete($aGegner, $i)
    Else
    $aGegner[$i][0] = ""
    $aGegner[$i][1] = ""
    $aGegner[$i][2] = ""
    EndIf
    $i -= 1
    EndIf
    $i += 1
    WEnd
    EndFunc ;==>_DrawEnemies

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

    Func _CLOSEClicked()
    Exit
    EndFunc ;==>_CLOSEClicked

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

    Func _EXIT()
    For $i = 0 To UBound($aGegnerFarben) - 1
    _GDIPlus_BrushDispose($aGegnerFarben[$i])
    Next
    _GDIPlus_GraphicsDispose($graphic)
    _GDIPlus_GraphicsDispose($buffer)
    _GDIPlus_BitmapDispose($bitmap)
    _GDIPlus_Shutdown()
    EndFunc ;==>_EXIT

    [/autoit]


    Das Script spawnt endlos viele Gegner. Wenn du Fragen zu meinem Lösungsansatz hast, nur zu.

    Edit:
    Hab mein Script mal was korrigiert...

    Zitat

    aber sie bewegen sich nicht konstant.

    aus dem Grund benutzt man für Spiele besser den EventMode, statt eine MsgSchleife mit Switch.

    mfg
    Developer30

    "Je mehr Käse, desto mehr Löcher; je mehr Löcher, desto weniger Käse. Ergo: Je mehr Käse, desto weniger Käse. 8| "
    "Programmers never die: they just GOSUB without RETURN"
    "I tried to change the world but I couldn't find the source code."

    3 Mal editiert, zuletzt von Developer30 (11. April 2012 um 19:56)

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

    MfG Nico

    MfG - Mit freundlichen Grüssen

    die Welt liegt uns zu Füssen, den wir steh'n drauf

    wir geh'n drauf für ein Leben voller Schall und Rauch

    bevor wir fall'n, fall'n wir lieber auf.

  • Niccoo: Schau dir mal für GDI+ die Tutorials an (Ubuntu, SEuBo etc)
    Der Trick im Script von Developer30 ist eig nur, das er mit Arrays arbeitet die bestimmte Werte haben (Position, Farbe)
    Das Array lässt er dann immer durchladen und schon hat er eine menge Bewegung drin :D

    Wenn du nicht weißt wie Array funktionieren, schau dir mal das Tut. von BugFix an (Findest du in seiner Signatur)

    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

  • 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 :/

    MfG Nico

    MfG - Mit freundlichen Grüssen

    die Welt liegt uns zu Füssen, den wir steh'n drauf

    wir geh'n drauf für ein Leben voller Schall und Rauch

    bevor wir fall'n, fall'n wir lieber auf.

    3 Mal editiert, zuletzt von Niccoo (12. April 2012 um 14:19) aus folgendem Grund: Neues Skript hoch geladen, andere kleine bugs fixed

  • Bei mir flakert es jetzt auch :/

    MfG Nico

    MfG - Mit freundlichen Grüssen

    die Welt liegt uns zu Füssen, den wir steh'n drauf

    wir geh'n drauf für ein Leben voller Schall und Rauch

    bevor wir fall'n, fall'n wir lieber auf.