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
#include <GUIConstants.au3>
#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
$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)
$graphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
$bitmap = _GDIPlus_BitmapCreateFromGraphics(800, 400, $graphic)
$buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
$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)
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
Func _EXIT()
_GDIPlus_GraphicsDispose($graphic)
_GDIPlus_GraphicsDispose($buffer)
_GDIPlus_BitmapDispose($bitmap)
_GDIPlus_Shutdown()
EndFunc
So bewegt er sie nur einzelnd, von oben nach unten, aber wenn ich den 2ten teil weg lase also das hier:
Spoiler anzeigen
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
fängt er zufällig an, aber sie bewegen sich nicht konstant.
Ich bitte um hilfe :(((