Bei mir flakert es jetzt auch
Beiträge von Niccoo
-
-
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>
[/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>
#include <Misc.au3>
#include <Array.au3>Opt('GUICloseOnESC', 0) ; Beenden mit Esc ?
[/autoit] [autoit][/autoit] [autoit]
Opt('GUIOnEventMode', 1) ; Event Mode
Opt('MustDeclareVars', 1) ; Variablen müssen deklariert werden. (sauberes Programmieren nötig)
Opt('MouseCoordMode', 2) ; Mauskoordinaten relativ zum FensterGlobal 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]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
; 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_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGUI = GUICreate("Defender", $iBreite, $iHoehe)
[/autoit] [autoit][/autoit] [autoit]
$hGFX = _GDIPlus_GraphicsCreateFromHWND($hGUI)
$hBMP = _GDIPlus_BitmapCreateFromGraphics($iBreite, $iHoehe, $hGFX)
$hBUF = _GDIPlus_ImageGetGraphicsContext($hBMP)$hBrush[0] = _GDIPlus_BrushCreateSolid(0xFF00592A) ; Weiss
[/autoit] [autoit][/autoit] [autoit]
$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$hPen[0] = _GDIPlus_PenCreate(0xFF91AAB9, 4)
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsSetSmoothingMode($hBUF, 4)
[/autoit] [autoit][/autoit] [autoit]GUISetOnEvent(-3,'___Exit', $hGUI) ; Exit
[/autoit] [autoit][/autoit] [autoit]
OnAutoItExitRegister('_Freigeben') ; Beim Beenden auch alle Ressourcen freigeben.
GUIRegisterMsg(0xF, 'WM_PAINT') ; Neu Zeichnen, wenn Windows das gerne so hätte...
GUISetState(@SW_SHOW)_AddGegner(Random(1, 9, 1))
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsClear($hBUF, 0xFF00592A)
[/autoit] [autoit][/autoit] [autoit]_AddPfeil()
[/autoit] [autoit][/autoit] [autoit]
_ZeichnePfeil()
_ZeichneGegner()
_ZeichneArmbrust()
If UBound($Gegner) < 15 And Not Random(0, 10, 1) Then _AddGegner(Random(1, 9, 1))
; ToolTip('Anzahl Gegner: ' & UBound($Gegner))WM_PAINT()
[/autoit] [autoit][/autoit] [autoit]
Sleep(5)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()
[/autoit] [autoit][/autoit] [autoit]
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)
EndFuncFunc _CheckPfeilGegner()
[/autoit] [autoit][/autoit] [autoit]
Local $iUbound = UBound($Gegner)
Local $bUbound = UBound($Pfeil)
Local $aKlon[1]
Local $bKlon[1]For $i = 1 To $iUbound - 1 Step 1
[/autoit] [autoit][/autoit] [autoit]
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)
EndFuncFunc _ZeichnePfeil()
[/autoit] [autoit][/autoit] [autoit]
Local $iUbound = UBound($Pfeil) ; so viele Pfeile gib es
Local $aKlon[1] ; Klon
Local $iYSchritFor $i = 1 To $iUbound - 1 Step 1
[/autoit] [autoit][/autoit] [autoit]$iYSchrit = ($Pfeil[$i][1][1] - 200) / ($Pfeil[$i][1][0] - 0)
[/autoit] [autoit][/autoit] [autoit]
$Pfeil[$i][0][0] += 1*10 ;x wird um einen schrit erhöht
$Pfeil[$i][0][1] += $iYSchrit*10 ;y wird erhöhtIf $Pfeil[$i][0][0] < 0 or $Pfeil[$i][0][0] > $iBreite or $Pfeil[$i][0][1] < 0 or $Pfeil[$i][0][1] > $iHoehe Then
[/autoit] [autoit][/autoit] [autoit]
_ArrayAdd($aKlon,$i)
EndIf_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 ?
[/autoit] [autoit][/autoit] [autoit]
ReDim $Gegner[$iUbound+1][UBound($Gegner, 2)] ; Jetzt gibt es einen Mehr !$Gegner[$iUbound][0] = $iBreite + 50 ; x
[/autoit] [autoit][/autoit] [autoit]
$Gegner[$iUbound][1] = Int(($iHoehe/$iReihen)*$Reihe) ; y
$Gegner[$iUbound][2] = Random(2,6,1) ; FarbeEndFunc
[/autoit] [autoit][/autoit] [autoit]Func _AddPfeil()
[/autoit] [autoit][/autoit] [autoit]
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)]$Pfeil[$iUbound][0][0] = 0 ;die x jetzt koordinate
[/autoit] [autoit][/autoit] [autoit]
$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
EndFuncFunc _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.
[/autoit] [autoit][/autoit] [autoit]
For $i = 1 To UBound($aKlon) - 1 ; Ist ein Gegner Tot wird dieser Wert auf 1 gesetzt.
_ArrayDelete($Gegner, $aKlon[$i])
Next
EndFunc ;==>_DeleteGegnerFunc _DelPfeil(ByRef $aKlon)
[/autoit] [autoit][/autoit] [autoit]
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)]
EndIfNext
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
EndFunc ;==>_DeletePfeilFunc WM_PAINT()
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImage($hGFX, $hBMP, 0, 0)
EndFuncFunc _Freigeben()
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsDispose($hBUF)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_BitmapDispose($hBMP)
_GDIPlus_GraphicsDispose($hGFX)For $i = 0 To UBound($hBrush) - 1 Step 1
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_BrushDispose($hBrush[$i])
NextFor $i = 0 To UBound($hPen) - 1 Step 1
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_PenDispose($hPen[$i])
Next_GDIPlus_Shutdown()
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit]Func ___Exit()
[/autoit]
Exit
EndFuncIch hoffe, es findet einer wodran es liegen könnte
-
Wohoooaa richtig gut *.* werde aber jz erstmal schauen, ob ich dein skript durchblinke :wacko:
-
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 ). 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>
[/autoit] [autoit][/autoit] [autoit]
#include<GDIPlus.au3>
#include<Misc.au3>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
[/autoit] [autoit][/autoit] [autoit]
$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_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$Gui = GUICreate("Defender", 800, 400)
[/autoit] [autoit][/autoit] [autoit]
$graphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
$bitmap = _GDIPlus_BitmapCreateFromGraphics(800, 400, $graphic)
$buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)$brushWeiss = _GDIPlus_BrushCreateSolid(0xFF00592A)
[/autoit] [autoit][/autoit] [autoit]
$brushArmbrust = _GDIPlus_BrushCreateSolid(0xFF91AAB9)
$brushGegner1 = _GDIPlus_BrushCreateSolid(0xFF630304)
$brushGegner2 = _GDIPlus_BrushCreateSolid(0xFF2E5B92)
$brushGegner3 = _GDIPlus_BrushCreateSolid(0xFFFDD00A)
$brushGegner4 = _GDIPlus_BrushCreateSolid(0xFF65583A)
$brushGegner5 = _GDIPlus_BrushCreateSolid(0xFF000000)GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$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)
WEndFunc _EXIT()
[/autoit]
_GDIPlus_GraphicsDispose($graphic)
_GDIPlus_GraphicsDispose($buffer)
_GDIPlus_BitmapDispose($bitmap)
_GDIPlus_Shutdown()
EndFuncSo 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
[/autoit]
$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 -= 2fängt er zufällig an, aber sie bewegen sich nicht konstant.
Ich bitte um hilfe :(((
-
Okeee, ich mache ein mini mini mini mini mini TD 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
-
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 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
-
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
Das sind bilder von dem Spiel, der code:
Spoiler anzeigen
[autoit]#include <GuiConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GdiPlus.au3>;das include
#include <Misc.au3>OnAutoItExitRegister("_end") ; die Funktion _end am Ende des Scriptes ausführen
[/autoit] [autoit][/autoit] [autoit]
Opt("GUIOnEventMode", 1)
HotKeySet("{ENTER}","_WaveStart")
Global $GegnerX = -50
Global $GegnerY = 79
Global $Start = False$Gui = GUICreate("Beispiel", 1000, 600)
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW)_GDIPlus_Startup() ;Gdi starten
[/autoit] [autoit][/autoit] [autoit]$Map = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Map.jpg")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$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")While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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
WEndFunc _Move()
[/autoit] [autoit][/autoit] [autoit]
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
EndFuncFunc _WaveStart()
[/autoit] [autoit][/autoit] [autoit]
HotKeySet("{ENTER}")
Global $Gegner = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Gegner1.jpg")
_GDIPlus_GraphicsDrawImageRect($hBuffer, $Gegner, $GegnerX, $GegnerY, 20, 20)
$Start = True
EndFuncFunc _end();die Exit funktion
[/autoit]
_GDIPlus_GraphicsDispose($graphic);Grafik Objekt freigeben
_GDIPlus_ImageDispose($Map);Bild Objekt freigeben
_GDIPlus_Shutdown();Ressourcen freigeben
Exit
EndFunc ;==>_endDa 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
MfG Nico
-
Danke, ich habe mich jz mit GDI plus beschäftigt und versuche es damit, doch leider kenne ich mich damit 0 aus 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 bin ich mit der spiel programmierung angefangen. Ich hatte mit selbst die bilder erstellt. Ich lade mal skript mit bildern hoch.
-
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>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WINAPI.au3>
#include <StaticConstants.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]$GUI1 = GUICreate("Defender", @DesktopWidth, @DesktopHeight, -9, 0)
[/autoit] [autoit][/autoit] [autoit]
$Bild = GUICtrlCreatePic (@ScriptDir & "\img19.jpg",0,0,0,0, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")$pic = GUICreate("",100, 100, 500, 0, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $GUI1)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUICtrlCreatePic(@ScriptDir & "\Spiel Start.gif", 0, 0, 100, 100, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS),$WS_EX_TRANSPARENT );~ GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW, $pic)
GUISetState(@SW_SHOW, $GUI1)While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Sleep(50)
WEndFunc _Exit()
[/autoit]
Exit
EndFuncDa 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