random+gui

  • hallo ich habe mir eine gui erstellt wo die bilder per random erstellt werden sollen
    nur klappt das random nicht für jede hilfe dank bar

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    $pic1="D:\Fisch-Bitmap\AAl.bmp"
    $pic2="D:\Fisch-Bitmap\bachforelle.bmp"
    $pic3="D:\Fisch-Bitmap\barbe.bmp"

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

    GUICreate("Meine Fische Mit Bild,Rechtschreibung Gross Und Klein Egal",1000,700)

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

    $a= Random($pic1,$pic3, 1)

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

    GUISetBkColor (0x90BBCC)
    GUICtrlCreateLabel("Wie Heißen Diese Fische",430,0,150,30)
    $1=GUICtrlCreateInput("",10,30,100,30)

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

    $2=GUICtrlCreateButton("O.K",110,30,30,30)
    GUICtrlCreatePic($a,10,60, 300,200)
    3=GUICtrlCreateInput("",350,30,100,30)
    $4=GUICtrlCreateButton("O.K",450,30,30,30)
    GUICtrlCreatePic("D:\Fisch-Bitmap\bachforelle.bmp",350,60, 300,200)

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

    $5=GUICtrlCreateInput("",690,30,100,30)
    $6=GUICtrlCreateButton("O.K",790,30,30,30)
    GUICtrlCreatePic("D:\Fisch-Bitmap\barbe.bmp",690,60, 300,200)
    GUISetState ()
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Hast du dir die Hilfe zu Random angesehen? Du kannst keinen String verwenden.

    Mal ein Lösungsvorschlag: Alle Pfade in ein 1D-Array laden und per Random den Index bestimmen.

    edit \ so ca.

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <Array.au3>

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

    dim $apic[3]
    $apic[0]=@ScriptDir & "\AAl.bmp"
    $apic[1]=@ScriptDir & "\bachforelle.bmp"
    $apic[2]=@ScriptDir & "\barbe.bmp"
    _ArrayDisplay($apic)

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

    GUICreate("Meine Fische Mit Bild,Rechtschreibung Gross Und Klein Egal",1000,700)

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

    $a= Random(0,ubound($apic), 1)
    MsgBox(1, "", $apic[$a])
    GUISetBkColor (0x90BBCC)
    GUICtrlCreateLabel("Wie Heißen Diese Fische",430,0,150,30)
    $1=GUICtrlCreateInput("",10,30,100,30)

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

    $2=GUICtrlCreateButton("O.K",110,30,30,30)
    GUICtrlCreatePic($apic[$a],10,60, 300,200)
    $3=GUICtrlCreateInput("",350,30,100,30)
    $4=GUICtrlCreateButton("O.K",450,30,30,30)
    GUICtrlCreatePic("D:\Fisch-Bitmap\bachforelle.bmp",350,60, 300,200)

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

    $5=GUICtrlCreateInput("",690,30,100,30)
    $6=GUICtrlCreateButton("O.K",790,30,30,30)
    GUICtrlCreatePic("D:\Fisch-Bitmap\barbe.bmp",690,60, 300,200)
    GUISetState ()
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Einmal editiert, zuletzt von nuts (31. August 2009 um 13:53)

  • Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <File.au3>
    #include <GUIConstantsEx.au3>

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

    Global $randomarr[1]

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

    $files = _FileListToArray("Bilder", "*.bmp", 1)

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

    While True
    If UBound($randomarr) = UBound($files) Then ExitLoop
    $r = Random(1, $files[0], 1)
    If _ArraySearch($randomarr, $r) = -1 Then _ArrayAdd($randomarr, $r)
    WEnd

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

    GUICreate("Meine Fische Mit Bild,Rechtschreibung Gross Und Klein Egal", 1000, 700)
    GUISetBkColor(0x90BBCC)

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

    GUICtrlCreateLabel("Wie Heißen Diese Fische", 430, 6, 150, 30)

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

    For $i = 10 To 690 Step 340
    GUICtrlCreateInput("", $i, 30, 100, 30)
    GUICtrlCreateButton("O.K", 100 + $i, 30, 30, 30)
    GUICtrlCreatePic(@ScriptDir & "\Bilder\" & $files[$randomarr[Floor($i / 340) + 1]], $i, 60, 300, 200)
    Next

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

    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Im Anhang mit den Bildern...

    /Edit: Spoiler

    Einmal editiert, zuletzt von anno2008 (31. August 2009 um 14:19)

  • danke für eure hilfe
      @anno leider kommt fehlermeldung

    Spoiler anzeigen


    "C:\Programme\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "D:\Fische\random.au3" /autoit3dir "C:\Programme\AutoIt3" /UserParams
    +>12:03:20 Starting AutoIt3Wrapper v.1.10.1.12 Environment(Language:0407 Keyboard:00000407 OS:WIN_XP/Service Pack 2 CPU:X86 ANSI)
    >Running AU3Check (1.54.14.0) from:C:\Programme\AutoIt3
    +>12:03:20 AU3Check ended.rc:0
    >Running:(3.3.0.0):C:\Programme\AutoIt3\autoit3.exe "D:\Fische\random.au3"
    D:\Fische\random.au3 (11) : ==> Subscript used with non-Array variable.:
    $r = Random(1, $files[0], 1)
    $r = Random(1, $files^ ERROR
    ->12:03:20 AutoIT3.exe ended.rc:1
    +>12:03:21 AutoIt3Wrapper Finished
    >Exit code: 1 Time: 1.765


    sagt mir im nur das eine nicht Array variable benutzt wird
    nuts danke aber es wird kein bild inder gui angezeigt.es kommt keine fehlemeldungke
    kann einer helfen

  • In beiden Fällen stimmen einfach die Pfade zu den Bildern nicht.
    Gib beim Beispiel von anno2008 den Ordner mit den Bilddateien an (in der Funktion _FileListtoArray) und bei meinem den richtigen Pfad (bei $apic[0] bis $apic[2]) zu den jeweiligen Bildern.

  • Ich hab dir doch extra in meinem Post eine Zip-Datei angehängt. Einfach runterladen und entpacken und das script ausführen, das mit entpackt wurde.
    Der Ordner "Bilder" und das Script "random.au3" müssen im selben Verzeichnis liegen (was sie tun, wenn du es ganz normal entpackt hast).

  • Hi,
    bei dem Code von Anno sind die Bilder im Unterverzeichnis Bilder.
    oder Du änderst:

    [autoit]


    $files = _FileListToArray("Bilder", "*.bmp", 1)
    ;und weiter unten
    GUICtrlCreatePic(@ScriptDir & "\Bilder\" & $files[$randomarr[Floor($i / 340) + 1]], $i, 60, 300, 200)

    [/autoit]


    in

    [autoit]


    $files = _FileListToArray(@ScriptDir, "*.bmp", 1)
    ;weiter unten
    GUICtrlCreatePic(@ScriptDir & "\" & $files[$randomarr[Floor($i / 340) + 1]], $i, 60, 300, 200)

    [/autoit]

    ;-))
    Stefan