Hi Community,
bei folgendem Code wird komischerweise nur manchmal eine rote Grafik erstellt. Ich weiß nicht wo der Fehler liegen könnte.
Spoiler anzeigen
;--- Jautois
[/autoit] [autoit][/autoit] [autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]$window = GUICreate("Ameise", 900, 600, 303, 219)
[/autoit] [autoit][/autoit] [autoit]Dim $color[3] = [0x0000f0,0xff0000,0x00ff00]
Dim $x = 0, $y = 0, $stats[3], $essen_status = 1, $lebewesen_stat[60][90], $graphic[60][90], $lebewesenstart_x = Random(0, 59, 1), $lebewesenstart_y = Random(0, 89, 1)
For $i = 0 To 59
For $k = 0 To 89
If $i = $lebewesenstart_y And $k = $lebewesenstart_x Then
$graphic[$i][$k] = GUICtrlCreateGraphic($x, $y, 10, 10)
GUICtrlSetBkColor(-1, $color[1])
$lebewesen_stat[$i][$k] = 0
Sleep(1000)
Else
$graphic[$i][$k] = GUICtrlCreateGraphic($x, $y, 10, 10)
GUICtrlSetBkColor(-1, $color[2])
$lebewesen_stat[$i][$k] = 2
EndIf
$x += 10
Next
$y += 10
$x = 0
Next
GUISetState(@SW_SHOW)
While 1
Sleep(10)
If $essen_status = 1 Then Bewegen()
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func Bewegen()
$essen_status = 0
$temp_random_x = Random(-1, 1, 1)
$temp_random_y = Random(-1, 1, 1)
If $lebewesenstart_y + $temp_random_y > 1 And $lebewesenstart_y + $temp_random_y < 59 And $lebewesenstart_x + $temp_random_x > 1 And $lebewesenstart_x + $temp_random_x < 89 Then
If $lebewesen_stat[$lebewesenstart_y + $temp_random_y][$lebewesenstart_x + $temp_random_x] = 2 Then
GUICtrlSetBkColor($graphic[$lebewesenstart_y + $temp_random_y][$lebewesenstart_x + $temp_random_x], $color[1])
$lebewesenstart_x = $lebewesenstart_x + $temp_random_x
$lebewesenstart_y = $lebewesenstart_y + $temp_random_y
$stats[0] += 1
$lebewesen_stat[$lebewesenstart_y + $temp_random_y][$lebewesenstart_x + $temp_random_x] = 0
Elseif $lebewesen_stat[$lebewesenstart_y + $temp_random_y][$lebewesenstart_x + $temp_random_x] = 0 Then
$stats[1] += 1
EndIf
EndIf
$stats[2] = $stats[0] - $stats[1]
If $stats[2] < -100 Then
MsgBox(64,"Info","Ameise ist gestorben!")
Exit
EndIf
WinSetTitle("Ameise", "", "Ameise - Zufriedenheit: " & $stats[2])
$essen_status = 1
EndFunc ;==>Essen