Mastermind (ICH HABE WIEDER INTERNET JUCHUU)

    • Offizieller Beitrag

    So, mal schnell aus dem Ärmel (ohne Garantie,nur damit du die Richtung siehst):

    Spoiler anzeigen
    [autoit]

    ; 1. Aufruf:
    _Select($reply, $Antwort, $Zahl1, $behalten1)
    ; 2. Aufruf:
    _Select($reply2, $Antwort2, $Zahl2, $behalten2)
    ; usw.

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

    Func _Select($REPLY, $ANTWORT, ByRef $ZAHL, ByRef $BEHALTEN)
    $REPLY=GUICtrlRead($ANTWORT[$z])
    select
    case $REPLY = $ZAHL
    GUICtrlCreatePic("grün.gif", 200, $top, 20, 20)
    $BEHALTEN=$REPLY
    $ZAHL = "leer"
    case $REPLY = $Zahl2 OR $REPLY = $Zahl3 OR $REPLY = $Zahl4
    GUICtrlCreatePic("grau.gif", 200, $top, 20, 20)
    case $REPLY <> $ZAHL OR $REPLY <> $Zahl2 OR $REPLY <> $Zahl3 OR $REPLY <> $Zahl4
    GUICtrlCreatePic("rot.gif", 200, $top, 20, 20)
    EndSelect
    EndFunc

    [/autoit]
  • Hallo,

    ich konnte deine Funktion (wie du ja schon weißt ;) ) adaptieren. AABER ich habe ein größeres Prolblem festgestellt. Also manchmal werden Zahlen die zuerst als Falsch angezeigt werden in der nächsten oder übernächsten Reihe als richtig angezeigt. Ich gehe davon aus das die generierten Zufallszahlen nicht constant bleiben. Wenn man zum Schluß (wenn das game gelöst ist) und dann das Spiel minimiert und wieder maximiert sind alle Farben falsch.

    Kann es sein das das Script immer wieder durchlaufen wird? Das würde auch den ursprünglichen array Fehler erklären der in einer Zeile auftrat wo das Script eigentlich schon viel weiter war und der jetzt durch eine IF Abfrage abgefangen wird.
    ALSO MEINE FRAGE (DAMDADADAMM):

    Wie stoppe ich das Script das es NICHT diese seltsame automatische wiederholung startet. Das Script ist nun wesentlich kürzer weshalb eine fundierte Analyse sicherlich leichter (und angenehmer) wird.

    Das neue Script:

    Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=Icon.ico
    #AutoIt3Wrapper_outfile=Mastermind.exe
    #AutoIt3Wrapper_Allow_Decompile=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.2.2.0
    Author: akira2012

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

    Script Function:
    Mastermind.

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

    #ce ----------------------------------------------------------------------------

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

    ; Script Start - Add your code below here

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

    #include<array.au3>
    #include<guiConstants.au3>
    #include<file.au3>
    #include <GuiEdit.au3>

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

    Global $Antwort[11], $Antwort2[11], $Antwort3[11], $Antwort4[11], $Ergebnis[11], $Ergebnis2[11], $Ergebnis3[11], $Ergebnis4[11], $Testen[11], $z=1
    Global $top=20, $reply, $reply2, $reply3, $reply4, $behalten1, $behalten2, $behalten3, $behalten4

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

    Const $Zahl1=Random(1, 9, 1)
    Const $Zahl2=Random(1, 9, 1)
    Const $Zahl3=Random(1, 9, 1)
    Const $Zahl4=Random(1, 9, 1)

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

    Opt("GUIOnEventMode", 1)

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

    $Master=GUICreate("Mastermind", 440, 500)
    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")

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

    ;GUISetBkColor(0x0000FF)
    ;GUICtrlCreatePic("AlbumArtSmall.jpg", 1, 1, 500, 500)
    for $i = 1 to 10
    $Antwort[$i]=GUICtrlCreateEdit("", 20, $top, 20, 20, 0x2001)
    GUICtrlSetLimit($Antwort[$i], 1)
    $top = $top+40

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

    Next
    $top=20
    $i=0
    for $i = 1 to 10
    $Antwort2[$i]=GUICtrlCreateEdit("", 60, $top, 20, 20, 0x2001)
    GUICtrlSetLimit ( $Antwort2[$i], 1)
    $top = $top+40

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

    Next
    $top=20
    for $i = 1 to 10
    $Antwort3[$i]=GUICtrlCreateEdit("", 100, $top, 20, 20, 0x2001)
    GUICtrlSetLimit ( $Antwort3[$i], 1)
    $top = $top+40

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

    Next
    $top=20
    for $i = 1 to 10
    $Antwort4[$i]=GUICtrlCreateEdit("", 140, $top, 20, 20, 0x2001)
    GUICtrlSetLimit ( $Antwort4[$i], 1)
    $top = $top+40
    Next
    $top=20

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

    for $i = 1 to 10
    $Testen[$i]=GUICtrlCreateButton("Prüfen", 380, $top)
    GUICtrlSetOnEvent($Testen[$i], "check")
    $top=$top+40
    Next
    $top=20

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

    for $i = 2 to 10
    GUICtrlSetState($Testen[$i], $GUI_DISABLE)
    GUICtrlSetState($Antwort[$i], $GUI_DISABLE)
    GUICtrlSetState($Antwort2[$i], $GUI_DISABLE)
    GUICtrlSetState($Antwort3[$i], $GUI_DISABLE)
    GUICtrlSetState($Antwort4[$i], $GUI_DISABLE)
    Next

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

    GUISetState(@SW_SHOW)

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

    while 1
    sleep(1000)
    WEnd

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

    func check ()

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

    _Select($reply, $Antwort, $Zahl1, $behalten1, 200)
    _Select($reply2, $Antwort2, $Zahl2, $behalten2, 240)
    _Select($reply3, $Antwort3, $Zahl3, $behalten3, 280)
    _Select($reply4, $Antwort4, $Zahl4, $behalten4, 320)
    GUICtrlSetState($Antwort[$z], $GUI_DISABLE)
    GUICtrlSetState($Antwort2[$z], $GUI_DISABLE)
    GUICtrlSetState($Antwort3[$z], $GUI_DISABLE)
    GUICtrlSetState($Antwort4[$z], $GUI_DISABLE)

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

    GUICtrlSetState($Testen[$z], $GUI_DISABLE)
    $top=$top+40
    IF $Zahl1="leer" AND $Zahl2="leer" AND $Zahl3="leer" AND $Zahl4="leer" Then
    for $i = 1 to 10
    GUICtrlSetState($Testen[$i], $GUI_DISABLE)
    GUICtrlSetState($Antwort[$i], $GUI_DISABLE)
    GUICtrlSetState($Antwort2[$i], $GUI_DISABLE)
    GUICtrlSetState($Antwort3[$i], $GUI_DISABLE)
    GUICtrlSetState($Antwort4[$i], $GUI_DISABLE)
    Next
    SoundPlay("ifeel.wav")
    GUICtrlCreateLabel("Herzlichen Glückwunsch!!! Du bist das MASTERMIND! ;)", 20, 450)
    Else

    $z=$z+1
    IF $z < 11 Then

    GUICtrlSetState($Testen[$z], $GUI_ENABLE)
    GUICtrlSetState($Antwort[$z],$GUI_ENABLE)
    GUICtrlSetState($Antwort2[$z], $GUI_ENABLE)
    GUICtrlSetState($Antwort3[$z], $GUI_ENABLE)
    GUICtrlSetState($Antwort4[$z], $GUI_ENABLE)

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

    if $Zahl1 = "leer" Then
    _GUICtrlEditSetSel($Antwort[$z], 1,2)
    _GUICtrlEditReplaceSel ($Antwort[$z], 1, $behalten1)
    GUICtrlSetState($Antwort[$z], $GUI_DISABLE)
    GUICtrlCreatePic("grün.gif", 200, $top, 20, 20)
    EndIf
    IF $Zahl2 = "leer" Then
    _GUICtrlEditSetSel($Antwort2[$z], 1,2)
    _GUICtrlEditReplaceSel ($Antwort2[$z], 1, $behalten2)
    GUICtrlSetState($Antwort2[$z], $GUI_DISABLE)
    GUICtrlCreatePic("grün.gif", 240, $top, 20, 20)
    EndIf
    IF $Zahl3 = "leer" Then
    _GUICtrlEditSetSel($Antwort3[$z], 1,2)
    _GUICtrlEditReplaceSel ($Antwort3[$z], 1, $behalten3)
    GUICtrlSetState($Antwort3[$z], $GUI_DISABLE)
    GUICtrlCreatePic("grün.gif", 280, $top, 20, 20)
    EndIf
    IF $Zahl4 = "leer" Then
    _GUICtrlEditSetSel($Antwort4[$z], 1,2)
    _GUICtrlEditReplaceSel ($Antwort4[$z], 1, $behalten4)
    GUICtrlSetState($Antwort4[$z], $GUI_DISABLE)
    GUICtrlCreatePic("grün.gif", 320, $top, 20, 20)
    EndIf
    EndIf
    EndIf
    IF $z = 11 Then

    if $Zahl1 = "leer" Then
    $Zahl1=$behalten1
    EndIf
    if $Zahl2 = "leer" Then
    $Zahl2=$behalten2
    EndIf
    if $Zahl3 = "leer" Then
    $Zahl3=$behalten3
    EndIf
    if $Zahl4 = "leer" Then
    $Zahl4=$behalten4
    EndIf
    GUICtrlCreateLabel("LOOOOOOOOOSER! :p Die richtige Antwort wäre gewesen: "&$Zahl1&$Zahl2&$Zahl3&$Zahl4, 20, 450)
    SoundPlay("Lachen.wav")

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

    EndIf
    EndFunc

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

    Func CLOSEClicked()
    Exit
    EndFunc

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

    Func _Select($REPLY, $ANTWORT, ByRef $ZAHL, ByRef $BEHALTEN, $widht)
    $REPLY=GUICtrlRead($ANTWORT[$z])
    select
    case $REPLY = $ZAHL
    GUICtrlCreatePic("grün.gif", $widht, $top, 20, 20)
    $BEHALTEN=$REPLY
    $ZAHL = "leer"
    case $REPLY = $Zahl2 OR $REPLY = $Zahl3 OR $REPLY = $Zahl4
    GUICtrlCreatePic("grau.gif", $widht, $top, 20, 20)
    case $REPLY <> $ZAHL OR $REPLY <> $Zahl2 OR $REPLY <> $Zahl3 OR $REPLY <> $Zahl4
    GUICtrlCreatePic("rot.gif", $widht, $top, 20, 20)
    EndSelect
    EndFunc

    [/autoit]


    Danke schonmal für eure Hilfe ;)


    MfG

    akira2012

    MfG

    akira2012

    ***---____---Wer RechtSCHRAIBfehler findet der darf Sie behalLTEN!---___---***

    Einmal editiert, zuletzt von akira2012 (28. Juni 2007 um 21:48)