kleines Color-Code-Game

  • Hallo an alle,
    hier mein erstes Game in Autoit,hab ich eigentlich für meine kleine Tochter gemacht.Hat mich fast ne Woche Arbeit gekostet.
    Ist nichts tolles,wäre trotzdem schön,wenn der eine oder andere mal rüberguckt und eventuelle Tipps in Richtung Codedesign etc abgibt.

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ButtonConstants.au3>
    #include <StaticConstants.au3>
    #include <Misc.au3>
    Global $farbe[10]
    $farbe[1]="0xFF0000"
    $farbe[2]="0x0000FF"
    $farbe[3]="0xC0DCC0"
    $farbe[4]="0xFFFF00" ;;;----->>>>> Hier kann man seine Farben definieren
    $farbe[5]="0xFF00FF"
    $farbe[6]="0xFF9900"
    $farbe[7]="0x00FF00"
    $farbe[8]="0x00FFFF"
    $farbe[9]="0x000000"
    Global $richtig=0
    Global $farbeneu=0xFFFFFF
    Global $starty=784
    Global $starty1=800
    Global $aFarben[4]
    Global $check[4]
    Global $farbbutton[4]
    zufallsfarben()
    #Region ### START Koda GUI section ### Form=
    $Fo1 = GUICreate("", 513, 473, 192, 124)
    $Bu1 = GUICtrlCreateButton("Weiter", 328, 384, 161, 65, $WS_GROUP)
    GUICtrlSetFont(-1, 22, 400, 0, "Comic Sans MS")
    $box1 = GUICtrlCreateCheckbox("", 88, 74, 17, 33,$BS_AUTO3STATE)
    $box2 = GUICtrlCreateCheckbox("", 88, 107, 17, 33,$BS_AUTO3STATE)
    $box3 = GUICtrlCreateCheckbox("", 88, 139, 17, 33,$BS_AUTO3STATE)
    $Label1 = GUICtrlCreateLabel("Farbe ist nicht vorhanden", 120, 79, 191, 27)
    GUICtrlSetFont(-1, 12, 400, 0, "Comic Sans MS")
    $Label2 = GUICtrlCreateLabel("Farbe ist vorhanden,aber an anderer Stelle", 120, 113, 320, 27)
    GUICtrlSetFont(-1, 12, 400, 0, "Comic Sans MS")
    $Label3 = GUICtrlCreateLabel("Farbe ist richtig", 120, 145, 126, 27)
    GUICtrlSetFont(-1, 12, 400, 0, "Comic Sans MS")
    guictrlsetstate($box1,$GUI_UNCHECKED)
    guictrlsetstate($box3,$GUI_CHECKED)
    guictrlsetstate($box2,$GUI_INDETERMINATE)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

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

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

    Case $Bu1
    GUIDelete($Fo1)
    ExitLoop
    EndSwitch
    WEnd
    #cs
    for $a=0 to 3
    ConsoleWrite($aFarben[$a]&@CR) ;;;;----------->>>>>>>>CHEAT in Konsole
    Next
    #ce
    #Region ### START Koda GUI section ### Form=
    $Form1_1 = GUICreate("", 461, 855, 323, 80,$WS_POPUP)
    $3 = GUICtrlCreateLabel("", 104, $starty, 65, 65)
    GUICtrlSetBkColor(-1,$farbeneu)
    $4 = GUICtrlCreateLabel("", 199, $starty, 65, 65)
    GUICtrlSetBkColor(-1,$farbeneu)
    $5 = GUICtrlCreateLabel("", 288, $starty, 65, 65)
    GUICtrlSetBkColor(-1,$farbeneu)
    $6 = GUICtrlCreateLabel("", 383, $starty, 65, 65)
    GUICtrlSetBkColor(-1,$farbeneu)
    $Checkbox1 = GUICtrlCreateCheckbox("", 16, $starty1, 17, 17,$BS_AUTO3STATE)
    $Checkbox2 = GUICtrlCreateCheckbox("", 35, $starty1, 17, 17,$BS_AUTO3STATE)
    $Checkbox3 = GUICtrlCreateCheckbox("", 55, $starty1, 17, 17,$BS_AUTO3STATE)
    $Checkbox4 = GUICtrlCreateCheckbox("", 74, $starty1, 17, 17,$BS_AUTO3STATE)
    global $fertig=GUICtrlCreateButton("Fertig",20,$starty1+25,70,25)
    for $a=7 to 10
    GUICtrlSetState($a,$GUI_HIDE)
    $b=$a-7
    $check[$b]=$a
    $farbbutton[$b]=$a-4
    Next
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    finishcheck($richtig)
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $3
    colorchooser($3)
    Case $4
    colorchooser($4)
    Case $5
    colorchooser($5)
    Case $6
    colorchooser($6)
    case $fertig
    farbevergleichen($aFarben,$farbbutton,$check)
    EndSwitch
    WEnd

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

    Func finishcheck(ByRef $richtig)
    $control=ControlGetPos ( $Form1_1, "",$farbbutton[1])
    if $control[1]<10 Then
    MsgBox(0,"","Nicht geschafft",3)
    Exit
    endif
    if $richtig=4 then
    MsgBox(0,"","FERTIG",3)
    Exit
    endif
    EndFunc

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

    func colorchooser(ByRef $taste)
    $fenster=WinGetPos($Form1_1)
    $control=ControlGetPos ( $Form1_1, "",$taste)
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("", 175, 175,$control[0]+$fenster[0],$control[1]-110,$WS_POPUP)
    GUISetBkColor(0xEEEFF7)
    GUISetFont(4,100,"","Comic Sans Ms")
    $Button1 =GUICtrlCreateButton($farbe[1], 8, 8, 41, 41)
    GUICtrlSetBkColor(-1, $farbe[1])
    GUICtrlSetColor(-1, $farbe[1])
    $Button2 = GUICtrlCreateButton($farbe[2], 8, 64, 41, 41)
    GUICtrlSetBkColor(-1, $farbe[2])
    GUICtrlSetColor(-1,$farbe[2])
    $Button3 = GUICtrlCreateButton($farbe[3], 8, 128, 41, 41)
    GUICtrlSetBkColor(-1,$farbe[3])
    GUICtrlSetColor(-1,$farbe[3])
    $Button4 = GUICtrlCreateButton($farbe[4], 64, 8, 41, 41)
    GUICtrlSetBkColor(-1,$farbe[4])
    GUICtrlSetColor(-1,$farbe[4])
    $Button5 = GUICtrlCreateButton($farbe[5], 64, 64, 41, 41)
    GUICtrlSetBkColor(-1,$farbe[5])
    GUICtrlSetColor(-1,$farbe[5])
    $Button6 = GUICtrlCreateButton($farbe[6], 64, 128, 41, 41)
    GUICtrlSetBkColor(-1,$farbe[6])
    GUICtrlSetColor(-1,$farbe[6])
    $Button7 = GUICtrlCreateButton($farbe[7], 120, 8, 41, 41)
    GUICtrlSetBkColor(-1,$farbe[7])
    GUICtrlSetColor(-1,$farbe[7])
    $Button8 = GUICtrlCreateButton($farbe[8], 120, 64, 41, 41)
    GUICtrlSetBkColor(-1,$farbe[8])
    GUICtrlSetColor(-1,$farbe[8])
    $Button9 = GUICtrlCreateButton($farbe[9], 120, 128, 41, 41)
    GUICtrlSetBkColor(-1,$farbe[9])
    GUICtrlSetColor(-1,$farbe[9])
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    while 1
    $mauswo=GUIGetCursorInfo ($Form1)
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
    Case $GUI_EVENT_CLOSE
    GUIDelete($Form1)
    ExitLoop
    EndSwitch
    Select
    Case $nMsg[2]
    GUICtrlSetBKColor($taste,GUICtrlRead($nMsg[0]))
    GUICtrlSetColor($taste,GUICtrlRead($nMsg[0]))
    GUICtrlSetData($taste,Hex(GUICtrlRead($nMsg[0]),6))
    GUIDelete($Form1)
    ExitLoop
    EndSelect
    WEnd
    EndFunc

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

    Func zufallsfarben()
    $sFarben="123456789"
    For $Index=0 To 3
    $aFarben[$Index]=StringMid($sFarben,Random(1,StringLen($sFarben),1),1)
    $sFarben = StringReplace($sFarben,$aFarben[$Index],"")
    Next
    for $a=0 to 3
    $aFarben[$a]=$aFarben[$a]
    Next
    Return $aFarben
    EndFunc

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

    Func farbevergleichen(ByRef $aFarben,$farbbutton,$check)
    for $a=0 to 3
    GUICtrlSetState($check[$a],$GUI_SHOW)
    Next
    for $a=0 to 3
    GUICtrlSetState($check[$a],$GUI_UNCHECKED)
    $testbutton="0x"&GUICtrlRead($farbbutton[$a])
    for $b=0 to 3
    if $testbutton=$farbe[$aFarben[$b]] then
    GUICtrlSetState($check[$a],$GUI_INDETERMINATE)
    EndIf
    Next
    Next
    $richtig=0
    for $a=0 to 3
    $testbutton="0x"&GUICtrlRead($farbbutton[$a])
    if $testbutton=$farbe[$aFarben[$a]] then
    GUICtrlSetState($check[$a],$GUI_CHECKED)
    $richtig+=1
    EndIf
    Next
    for $a=0 to 3
    $control=ControlGetPos ( $Form1_1, "",$farbbutton[$a])
    $control1=ControlGetPos ( $Form1_1, "",$check[$a])
    $testbutton="0x"&GUICtrlRead($farbbutton[$a])
    GUICtrlSetPos($farbbutton[$a],$control[0],$control[1]-85,$control[2],$control[3])
    GUICtrlSetPos($check[$a],$control1[0],$control1[1]-85,$control1[2],$control1[3])
    GUICtrlCreateLabel("",$control[0],$control[1],$control[2],$control[3])
    GUICtrlSetBkColor(-1,$testbutton)
    Next
    $control=ControlGetPos ( $Form1_1, "",$fertig)
    GUICtrlSetPos($fertig,$control[0],$control[1]-85,$control[2],$control[3])
    Return($richtig)
    EndFunc

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

    Edit Oscar: AutoIt-Tags gesetzt.

    2 Mal editiert, zuletzt von Oscar (27. August 2010 um 20:19)

  • Super game.
    Ich persönlich stehe auf Master Mind und bin immer offen für eine Herausforderung ;)
    An deiner Stelle würde ich das Spiel GUI beweglich machen, da die positionierung manchmal eine
    entscheidende Rolle spielt.
    Aber davon abgesehen ist es sehr gut geworden.
    MfG. PrideRage

    Meine Projekte:
    ClipBoard Manager (beendet)
    Gutes ClipBoard Verwaltungs Programm mit nützlichen Funktionen.

    HTML Creator (beendet)
    Nützliches Tool um schnell ein eigenes HTML Dokument zu erstellen.

  • gut gelungen
    mein bestes war nach 2 versuchen :D
    (erstes mal 2 richtig und eine farbe an anderer stelle, dann war richtig)

  • Ist ziemlich gut geworden. Das Spiel gab es ja schon zu Dos Zeiten irgendwo^^

    Der Schwierigkeitsgrad ist für kleinere Kinder optimal. Wenn man schon etwas älter ist, ist das alles relativ einfach^^
    Dazu könnte man dann statt anzuzeigen welche Farben Richtig/An falscher Stelle sind nur anzeigen 2 Richtig, 1 An Falscher Stelle, ohne positionsangabe. Das macht es wieder um einiges Schwerer und auch für große anspruchsvoll. (Also ist für die Erhöhung des SChwierigkeitsgrads nur eine kleine Änderung von nöten ;)

    mfg
    Mars(i)

  • so mal kurz zu dem Problem von GE IXI TIM
    ich hab das Programm unter einer Auflösung von 1280x1024 geschrieben und getestet
    versuch einmal,im Script die Gui an deine Auflösung anzupassen (wenn sie von meiner abweicht),muß leider zugeben,daß ich die Darstellung nicht variabel an verschiedene Auflösungen angepasst habe.Dann sollte sich auch das Problem mit der Darstellung der 2.GUI klären.
    INSCHALLAH

  • Hat auf jeden Fall Potential!
    Wie Oscar schon sagte, "aufhübschen" ist dringend nötig. Dann würde ich mich über weitere Versionen :thumbup: wirklich freuen