mehrere Fenster mit gui^^

  • Ich habe hier ein kleines problem mit mehreren fenstern^^
    Wenn ich auf den Button nächste Stadt klicke läd sich das nächste fenster ja noch ganz normal aber wenn ich auf dem 2. fenster wieder auf den button "Nächste stadt! klicke passiert rein gar nichts obwohl es selbst aufgebaut ist... :thumbdown:

    [autoit]

    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    Opt("GUIOnEventMode", 1) ; Wechsle in den OnEvent Modus
    Global $p1name,$p2name, $p3name
    $p1 = "Player1"
    $p2 = "Player2"
    $p3 = "Player3"
    ;-------------------------------------------------------------------- deklaration der standardvariablen
    Global $einwohneranz[21], $minenstufe[21], $kirchenstufe[21], $militstufe[21], $tavernenstufe[21], $anzk[21], $anzrit[21], $anzkreuzrit[21]
    Global $beliebtheit[21], $steuerstufe[21]
    ;-------------------------------------------------------------------------------
    ;Intalisierung der stanardvariablen
    #Region
    For $i = 0 To 20
    $einwohneranz[$i] = 1000
    Next
    for $i = 0 To 20
    $minenstufe[$i] = 1
    Next
    for $i = 0 To 20
    $kirchenstufe[$i] = 1
    Next
    for $i = 0 To 20
    $militstufe[$i] = 1
    Next
    for $i = 0 To 20
    $tavernenstufe[$i] = 1
    Next
    for $i = 0 To 20
    $anzk[$i] = 0
    Next
    for $i = 0 To 20
    $anzrit[$i] = 0
    Next
    for $i = 0 To 20
    $anzkreuzrit[$i] = 0
    Next
    for $i = 0 To 20
    $beliebtheit[$i] = 90
    Next
    for $i = 0 To 20
    $steuerstufe[$i] = 1
    Next
    #EndRegion
    spieler11()
    Func vorschau()
    ;----------------------------- Vorschau anfang FUNKT NOCH NICHT^^
    ;$vorschau = GUICreate("Game", @desktopwidth, @desktopheight, 0, 0, $WS_POPUP, $WS_EX_TRANSPARENT)
    ;GUISetState()
    ;WinSetTrans ($vorschau, "", 0) ;So mach ich das Fentser transparent
    ;Sleep(2000)
    ;$vorschaupic = GUICtrlCreatePic("C:\Dokumente und Einstellungen\Clemens\Desktop\Autoit\Game\nightentertainment.jpg", 300, 200, 550, 500)
    ;Sleep(2000)
    ;spieler11()
    ;------------------------Vorschau ende
    EndFunc
    Func spieler11()
    GUIcreate($p1name & "s Zug")
    GUISetState()
    $info = GUICtrlCreateLabel("Stadtinformationen: " & @crlf & "Einwohneranzahl:" & $einwohneranz[0] & @crlf & "Beliebtheit: " & $beliebtheit[0] & @crlf & "Kämpfer: " & $anzk[0] & @crlf & "Ritter: " & $anzrit[0] & @crlf & "Kreuzritter: " & $anzkreuzrit[0] & @crlf & "Steuereinnahmen: " & $steuerstufe[0] * $einwohneranz[0], 20, 20)
    $naechstersp = GUIctrlcreatebutton("Nächste Stadt!", 50, 300)
    GUIctrlsetonevent($naechstersp, "spieler12")
    While 1
    Sleep(1000)
    Wend
    endfunc
    func spieler12()
    GUIDelete()
    GUIcreate($p1name & "s Zug")
    Guisetstate()
    $info = GUICtrlCreateLabel("Stadtinformationen: " & @crlf & "Einwohneranzahl:" & $einwohneranz[1] & @crlf & "Beliebtheit: " & $beliebtheit[1] & @crlf & "Kämpfer: " & $anzk[1] & @crlf & "Ritter: " & $anzrit[1] & @crlf & "Kreuzritter: " & $anzkreuzrit[1] & @crlf & "Steuereinnahmen: " & $steuerstufe[1] * $einwohneranz[1], 20, 20)
    $naechstersp1 = GUIctrlcreatebutton("Nächste Stadt!", 50, 300)
    GUIctrlsetonevent($naechstersp1, "spieler13")
    While 1
    Sleep(1000)
    Wend
    Endfunc
    Func spieler13()
    GUIdelete()
    GUIcreate($p1name & "s Zug")
    Guisetstate()
    $info = GUICtrlCreateLabel("Stadtinformationen: " & @crlf & "Einwohneranzahl:" & $einwohneranz[2] & @crlf & "Beliebtheit: " & $beliebtheit[2] & @crlf & "Kämpfer: " & $anzk[2] & @crlf & "Ritter: " & $anzrit[2] & @crlf & "Kreuzritter: " & $anzkreuzrit[2] & @crlf & "Steuereinnahmen: " & $steuerstufe[2] * $einwohneranz[2], 20, 20)
    $naechstersp2 = Guictrlcreatebutton("Nächste Stadt!", 50, 300)
    GUIctrlsetonevent($naechstersp2, "spieler21")
    While 1
    Sleep(1000)
    Wend
    endfunc
    Func spieler21()
    Guidelete()
    Guicreate($p2name & "s Zug")
    $info = GUICtrlCreateLabel("Stadtinformationen: " & @crlf & "Einwohneranzahl:" & $einwohneranz[3] & @crlf & "Beliebtheit: " & $beliebtheit[3] & @crlf & "Kämpfer: " & $anzk[3] & @crlf & "Ritter: " & $anzrit[3] & @crlf & "Kreuzritter: " & $anzkreuzrit[3] & @crlf & "Steuereinnahmen: " & $steuerstufe[3] * $einwohneranz[3], 20, 20)
    $naechstersp3 = GUIctrlcreatebutton("Nächste Stadt!", 50, 300)
    GUIctrlsetonevent($naechstersp3, "close")
    While 1
    Sleep(1000)
    WEnd
    endfunc
    Func close()
    Exit
    endfunc

    [/autoit]
  • Auf dem Button liegt gar keine Funktion, du musst eine darauflegen. Wie man das macht weißte denke ich. Ohne eine Funktion auf dem Button kann gar nichts gehen ;)
    gruß Bio Drink

  • Hallo @night@,

    ich würde dafür nur einmal die GUI aufbauen und dann die Infos zur Stadt ändern z.B. so

    Spoiler anzeigen
    [autoit]


    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    Opt("GUIOnEventMode", 1) ; Wechsle in den OnEvent Modus
    Opt("MustDeclareVars", 1) ; Variablen müssen deklariert werden (TIPPFEHLER werden dadurch beim Testen schneller bemerkt)
    Global $asSpieler[3] ;Array für Strings der Spielernammen
    Global $iSpieler ;Integer für Anzahl der Spieler
    Global $hGui ;Gui
    Global $hlblSpieler ;Label mit dem Spielernamen
    Global $hlblinfo ;Label mit der Info zu Stadt
    Global $hbtnWeiter ;Button nächster Spieler
    $asSpieler[0]="Player1"
    $asSpieler[1]="Player2"
    $asSpieler[2]="Player3"

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

    ;-------------------------------------------------------------------- deklaration der standardvariablen
    Global $einwohneranz[21], $minenstufe[21], $kirchenstufe[21], $militstufe[21], $tavernenstufe[21], $anzk[21], $anzrit[21], $anzkreuzrit[21]
    Global $beliebtheit[21], $steuerstufe[21]
    ;-------------------------------------------------------------------------------
    ;Intalisierung der stanardvariablen
    #Region
    For $i = 0 To 20
    $einwohneranz[$i] = 1000
    $minenstufe[$i] = 1
    $kirchenstufe[$i] = 1
    $militstufe[$i] = 1
    $tavernenstufe[$i] = 1
    $anzk[$i] = 0
    $anzrit[$i] = 0
    $anzkreuzrit[$i] = 0
    $beliebtheit[$i] = 90
    $steuerstufe[$i] = 1
    Next
    #EndRegion

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

    _Main()

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

    Func _Main()
    $hGui=GUICreate("DEIN GAMENAME", @desktopwidth-100, @desktopheight-100)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_exitMain')
    $hlblSpieler=GUICtrlCreateLabel("Spieler", 20,10,@DesktopWidth-120,20)
    $hlblinfo = GUICtrlCreateLabel("Städteinfo", 20,40,@DesktopWidth-120,@DesktopHeight-180)
    $hbtnWeiter = GUICtrlCreateButton("nächster Spieler",@DesktopWidth-200,@DesktopHeight-150,90,20)
    GUIctrlsetonevent($hbtnWeiter, "_naechster")
    GUISetState(@SW_SHOW,$hGui)
    $iSpieler=-1
    _naechster()
    While $iSpieler<1000 ;also immer
    Sleep(1000)
    WEnd
    EndFunc

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

    Func _naechster()
    $iSpieler = $iSpieler+1
    if $iSpieler >2 Then $iSpieler=0
    ConsoleWrite($asSpieler[$iSpieler])
    GUICtrlSetData($hlblSpieler,$asSpieler[$iSpieler])
    GUICtrlSetData($hlblInfo,"Stadtinformationen: " & @crlf & "Einwohneranzahl:" & $einwohneranz[$iSpieler] & @crlf & "Beliebtheit: " & $beliebtheit[$iSpieler] & @crlf & "Kämpfer: " & $anzk[$iSpieler] & @crlf & "Ritter: " & $anzrit[$iSpieler] & @crlf & "Kreuzritter: " & $anzkreuzrit[$iSpieler] & @crlf & "Steuereinnahmen: " & $steuerstufe[$iSpieler] * $einwohneranz[$iSpieler])
    EndFunc

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

    Func _exitMain()
    Exit
    EndFunc
    #cs Ab hier kannst du alles löschen
    spieler11()
    Func vorschau()
    ;----------------------------- Vorschau anfang FUNKT NOCH NICHT^^
    ;$vorschau = GUICreate("Game", @desktopwidth, @desktopheight, 0, 0, $WS_POPUP, $WS_EX_TRANSPARENT)
    ;GUISetState()
    ;WinSetTrans ($vorschau, "", 0) ;So mach ich das Fentser transparent
    ;Sleep(2000)
    ;$vorschaupic = GUICtrlCreatePic("C:\Dokumente und Einstellungen\Clemens\Desktop\Autoit\Game\nightentertainment.jpg", 300, 200, 550, 500)
    ;Sleep(2000)
    ;spieler11()
    ;------------------------Vorschau ende
    EndFunc
    Func spieler11()
    GUIcreate($p1name & "s Zug")
    $info = GUICtrlCreateLabel("Stadtinformationen: " & @crlf & "Einwohneranzahl:" & $einwohneranz[0] & @crlf & "Beliebtheit: " & $beliebtheit[0] & @crlf & "Kämpfer: " & $anzk[0] & @crlf & "Ritter: " & $anzrit[0] & @crlf & "Kreuzritter: " & $anzkreuzrit[0] & @crlf & "Steuereinnahmen: " & $steuerstufe[0] * $einwohneranz[0], 20, 20)
    GUISetState()
    $naechstersp = GUIctrlcreatebutton("Nächste Stadt!", 50, 300)
    GUIctrlsetonevent($naechstersp, "spieler12")
    While 1
    Sleep(1000)
    Wend
    endfunc
    func spieler12()
    GUIDelete()
    GUIcreate($p1name & "s Zug")
    Guisetstate()
    $info = GUICtrlCreateLabel("Stadtinformationen: " & @crlf & "Einwohneranzahl:" & $einwohneranz[1] & @crlf & "Beliebtheit: " & $beliebtheit[1] & @crlf & "Kämpfer: " & $anzk[1] & @crlf & "Ritter: " & $anzrit[1] & @crlf & "Kreuzritter: " & $anzkreuzrit[1] & @crlf & "Steuereinnahmen: " & $steuerstufe[1] * $einwohneranz[1], 20, 20)
    $naechstersp1 = GUIctrlcreatebutton("Nächste Stadt!", 50, 300)
    GUIctrlsetonevent($naechstersp1, "spieler13")
    While 1
    Sleep(1000)
    Wend
    Endfunc

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

    Func spieler13()
    GUIdelete()
    GUIcreate($p1name & "s Zug")
    Guisetstate()
    $info = GUICtrlCreateLabel("Stadtinformationen: " & @crlf & "Einwohneranzahl:" & $einwohneranz[2] & @crlf & "Beliebtheit: " & $beliebtheit[2] & @crlf & "Kämpfer: " & $anzk[2] & @crlf & "Ritter: " & $anzrit[2] & @crlf & "Kreuzritter: " & $anzkreuzrit[2] & @crlf & "Steuereinnahmen: " & $steuerstufe[2] * $einwohneranz[2], 20, 20)
    $naechstersp2 = Guictrlcreatebutton("Nächste Stadt!", 50, 300)
    GUIctrlsetonevent($naechstersp2, "spieler21")
    While 1
    Sleep(1000)
    Wend
    endfunc

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

    Func spieler21()
    Guidelete()
    Guicreate($p2name & "s Zug")
    $info = GUICtrlCreateLabel("Stadtinformationen: " & @crlf & "Einwohneranzahl:" & $einwohneranz[3] & @crlf & "Beliebtheit: " & $beliebtheit[3] & @crlf & "Kämpfer: " & $anzk[3] & @crlf & "Ritter: " & $anzrit[3] & @crlf & "Kreuzritter: " & $anzkreuzrit[3] & @crlf & "Steuereinnahmen: " & $steuerstufe[3] * $einwohneranz[3], 20, 20)
    $naechstersp3 = GUIctrlcreatebutton("Nächste Stadt!", 50, 300)
    GUIctrlsetonevent($naechstersp3, "close")
    While 1
    Sleep(1000)
    WEnd
    endfunc

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

    Func close()
    Exit ;<----hier hast du beim ersten Aufruf von CLOSE dein ganzes Programm geschlossen
    endfunc
    #ce

    [/autoit]

    deine alten Scriptzeilen hab ich noch drin gelassen ausserdem würde ich das Label für die Info in einzelne aufteilen, funktioniert aber auch so

    viel Spass beim weiteren Ausbau des Spiels

    mfg (Auto)Bert

  • Kein Problem :P Aber ich würde das alles auch noch etwas aufpeppen :D
    Die Idee zum Spiel finde ich jedoch recht gut :D
    mfg Bio