Hallo zusammen.
Wir machen gerade ein kleines Spiel mit Autoit. (Xonix, falls es jemand kennt) Es ist auch schon fast fertig, aber es gibt ein Problem mit der Geschwindigkeit von GuiCtrlCreateGraphic. Wir wollten das Spiel bewusst ohne GDI-Plus o.ä. machen, es soll halt "simple" sein.
Es müssen verschiedene Bereiche schwarz ausgefüllt werden... Man hat gewonnen, sobald man mehr als 70% des Bildschirms schwarz ausgefüllt hat. Der Ball (Die Bälle) dürfen einen dabei nicht treffen.
Anbei ist ein Screenshot, der gelbe Bereich in ihm soll jetzt vom Programm ausgefüllt werden. Funktioniert auch prima, aber je größer der Bereich, desto langsamer wird das Ausfüllen nach einer Weile.
Weiß einer wie man dies beschleunigen könnte, ohne GDIPLUS o.ä. zu benutzen...?
Hier noch ein kleines Testprogramm, was jetzt die gesamte Gui ausfüllt. Das passiert so wie im richtigen Spiel, nur dass halt nicht alle werte im $array[][] auf 0 stehen.
Man sieht deutlich wie die Geschwindigkeit nach einer Zeit sehr langsam wird.
Spoiler anzeigen
#include
#include
#include
#include
Global $array[52][52]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$Form1 = GUICreate("test", 521, 521, 192, 124)
GUISetState(@SW_SHOW)
_mach()
[/autoit] [autoit][/autoit] [autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
Sleep(50)
Wend
Func _mach()
For $x = 0 To 51
For $y = 0 To 51
$array[$x][$y] = 0
Next
Next
For $x = 0 To 51
For $y = 0 To 51
if $array[$x][$y] = 0 Then
GUICtrlCreateGraphic($x*10,$y*10,10,10)
GUICtrlSetBkColor(-1,0x000000)
EndIf
Next
Next
EndFunc