Fehlerhaftes Script

  • Hi Community,

    bei folgendem Code wird komischerweise nur manchmal eine rote Grafik erstellt. Ich weiß nicht wo der Fehler liegen könnte.

    Spoiler anzeigen
    [autoit]

    ;--- 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)

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

    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)

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

    While 1
    Sleep(10)
    If $essen_status = 1 Then Bewegen()
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    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

    [/autoit]

    Einmal editiert, zuletzt von Jautois (18. Mai 2009 um 13:38)

  • 10x habe ich eine Ameise nun um ihr Leben beraubt und dasw bei 10 Versuchen. Also war 10x der rote Punkt da.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Hmm, dann scheint das Problem nicht am Script zu liegen. Ich such mal weiter .. Danke fürs testen!

    Lg Jautois

  • Hallo.

    Also ich habe es noch 10 mal auf dem Laptop ausprobiert und da hatte ich auch einmal keine Armeisen.

    Randbemerkung
    Eindeitiges Thema ist doch nicht dieses hier: "Fehlerhaftes Script".

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • [autoit]

    Dim ... $lebewesenstart_x = Random(0, 59, 1), $lebewesenstart_y = Random(0, 89, 1)

    [/autoit]

    Du hast die Random-Obergrenzen für x und y vertauscht, in y-Richtung hast du nur 59 Blöcke, dein Random kann aber Werte bis 89 erzeugen.
    Damit wird bei Werten über 59 deine erste For-Schleife nicht mehr durchlaufen!

    Wenn du die Random-Parameter korrigierst, sollten immer Ameisen erscheinen. 8)

    Gruß Ashpool

    Gruß Ashpool

    Zitat von mir

    Bin immer wieder erstaunt, wie begrenzt ein Horizont sein kann.

  • Zitat

    Darf man nach dem Sinn des Scriptes fragen!? 8|

    Klar... sind erste Versuche zu: Langton-Ameise

    Nur das ich in das Script noch nicht den Algo eingebaut habe. Sind kleine Mathematische Basteleien ....

    Lg Jautois