• Hallo liebe Autoitler,
    ich habe aus Langeweile mal ein kleines Spiel geschrieben, bei dem es darum geht innerhalb einer bestimmten Zeit Gästen in einem Café Wünsche zu erfüllen.
    Die Wünsche stehen oben in einer Listbox, dann das Objekt anklicken und danach auf den Gast klicken.
    Die Zeit wird von Level zu Level kürzer.
    Ein Level ist geschafft, wenn allen 3 Gästen der Wunsch erfüllt wurde.
    Wenn die Zeit zuende ist, bekommt man die Levelanzahl und die Punkte angezeigt.
    Punkte gibt es dafür, dass man einen Wunsch erfüllt. Punktabzug gibt es, wenn man dem falschen Gast, das falsche Objekt gibt.
    und

    Dank gilt @Ubuntu, der mir mit der "TimerInit" und "TimerDiff" - Sache geholfen hat ;)
    http://www.autoit.de/index.php?page…t=Sleep+umgehen

    Die Grafik ist ziemlich mies :( alles mit Paint gezeichnet... Vielleicht hat jemand was besseres, wäre darüber sehr erfreut!
    Genauso wie über Kritik, gefundene Bugs und sonstige Verbesserungsvorschläge!

    Im Anhang ist der Download des Scriptes, der .exe und der Bilder. Einfach Exe oder Au3 ausführen, und schon könnt ihr spielen :)

    Hier der Code: Download Dateien werden aber unbedingt benötigt! Auf jeden Fall die Bilder!

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #cs
    $clickaktuell = Merkt sich welhes Objekt zuletzt geklickt wurde
    $countobj = Addiert bei jedem richtigem Objekt eins dazu und sieht so, wieviele Aufgaben bereits richtig gelöst worden sind
    Nach dem Vorgang wieder auf Null zu setzen!
    $time = Zählt die verbleibende Zeit

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

    #ce

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

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Timers.au3>
    #include <GUIListBox.au3>

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

    Local $timestart

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

    $clickaktuell = 0
    $countobj = 0
    $score = 0
    $form = GUICreate("Eat'n Sleep", 791, 570, 145, 107)
    GUISetBkColor(0xFFFFFF)
    $table = GUICtrlCreatePic(@ScriptDir & "\images\table.jpg", 510, 56, 137, 475)
    $console = GUICtrlCreateList("", 10, 10, 480, 60, $LBS_NOTIFY)
    $scoreshower = GUICtrlCreateLabel("Punkte: " & $score, 600, 10, 600, 45)
    $guest1 = GUICtrlCreatePic(@ScriptDir & "\images\guest1.jpg", 661, 64, 113, 113)
    GUICtrlSetCursor (-1, 0)
    $guest2 = GUICtrlCreatePic(@ScriptDir & "\images\guest2.jpg", 661, 216, 113, 113)
    GUICtrlSetCursor (-1, 0)
    $guest3 = GUICtrlCreatePic(@ScriptDir & "\images\guest3.jpg", 661, 371, 113, 113)
    GUICtrlSetCursor (-1, 0)
    $coffee_machine = GUICtrlCreatePic(@ScriptDir & "\images\coffee_machine.jpg", 100, 130, 100, 113)
    GUICtrlSetCursor (-1, 0)
    $cake_full = GUICtrlCreatePic(@ScriptDir & "\images\cake_full.jpg", 100, 400, 100, 113)
    GUICtrlSetCursor (-1, 0)
    $ice_cream = GUICtrlCreatePic(@ScriptDir & "\images\ice_cream.jpg", 80, 270, 150, 100)
    GUICtrlSetCursor (-1, 0)
    GUISetState(@SW_SHOW)
    $divide = 30 ;Teiler der Zeit
    $round = 0 ;Zählt die Anzahl der gemachten erfolgreichen Runden

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

    MsgBox(0, "Einstieg", "Gib jedem Gast dass, was er essen will! Klicke dazu auf das entsprechende Objekt und dann auf den Gast! Viel Spaß!")

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

    While 1 ;GROßE SCHLEIFE START

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

    $guest1want = Random(1, 3, 1)
    $guest2want = Random(1, 3, 1)
    $guest3want = Random(1, 3, 1)

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

    If $guest1want = 1 Then ;Set List
    GUICtrlSetData($console, "Gast 1 hätte gerne eine Tasse Kaffee!")
    $draw1 = "cup"
    ElseIf $guest1want = 3 Then
    GUICtrlSetData($console, "Gast 1 hätte gerne einen Eisbecher!")
    $draw1 = "ice"
    ElseIf $guest1want = 2 Then
    GUICtrlSetData($console, "Gast 1 hätte gerne ein Stück Kuchen!")
    $draw1 = "cake"
    EndIf

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

    If $guest2want = 1 Then
    GUICtrlSetData($console, "Gast 2 hätte gerne eine Tasse Kaffee!")
    $draw2 = "cup"
    ElseIf $guest2want = 3 Then
    GUICtrlSetData($console, "Gast 2 hätte gerne einen Eisbecher!")
    $draw2 = "ice"
    ElseIf $guest2want = 2 Then
    GUICtrlSetData($console, "Gast 2 hätte gerne ein Stück Kuchen!")
    $draw2 = "cake"
    EndIf

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

    If $guest3want = 1 Then
    GUICtrlSetData($console, "Gast 3 hätte gerne eine Tasse Kaffee!")
    $draw3 = "cup"
    ElseIf $guest3want = 3 Then
    GUICtrlSetData($console, "Gast 3 hätte gerne einen Eisbecher!")
    $draw3 = "ice"
    ElseIf $guest3want = 2 Then
    GUICtrlSetData($console, "Gast 3 hätte gerne ein Stück Kuchen!")
    $draw3 = "cake"
    EndIf ;Ende SetList

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

    Sleep(1000)
    $timeprogress = GUICtrlCreateProgress(10, 540, 497, 45)
    $timer = _Timer_Init()

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

    While 1 ;Level X Start
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $coffee_machine ;Kaffee Start
    $clickaktuell = 1;Kaffee Ende

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

    Case $cake_full ;Kuchen Start
    $clickaktuell = 2 ;Kuchen Ende

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

    Case $ice_cream ;Eis start
    $clickaktuell = 3 ;Eis Ende

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

    Case $guest1 ;Gast1 START
    If $clickaktuell = $guest1want Then
    GUICtrlSetData($console, "Richtig! + 50 Punkte!")
    $score = $score + 50
    $pic1 = GUICtrlCreatePic(@ScriptDir & "\images\" & $draw1 & ".jpg", 400, 64, 113, 113)
    $countobj = $countobj + 1
    GUICtrlSetData($scoreshower, "Punkte: " & $score)
    $clickaktuell = 0
    ElseIf $clickaktuell = 0 Then
    GUICtrlSetData($console, "Wähle zuerst ein Objekt aus!")
    Else
    GUICtrlSetData($console, "Falsches Objekt für diesen Gast! - 50 Punkte!")
    $score = $score - 50
    $clickaktuell = 0
    GUICtrlSetData($scoreshower, "Punkte: " & $score)
    EndIf ;Gast 1 Ende

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

    Case $guest2 ;Start Gast2
    If $clickaktuell = $guest2want Then
    GUICtrlSetData($console, "Richtig! + 50 Punkte!")
    $score = $score + 50
    $pic2 = GUICtrlCreatePic(@ScriptDir & "\images\" & $draw2 & ".jpg", 400, 216, 113, 113)
    $countobj = $countobj + 1
    GUICtrlSetData($scoreshower, "Punkte: " & $score)
    $clickaktuell = 0
    ElseIf $clickaktuell = 0 Then
    GUICtrlSetData($console, "Wähle zuerst ein Objekt aus!")
    Else
    GUICtrlSetData($console, "Falsches Objekt für diesen Gast! - 50 Punkte!")
    $score = $score - 50
    $clickaktuell = 0
    GUICtrlSetData($scoreshower, "Punkte: " & $score)
    EndIf ;Gast 2 Ende

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

    Case $guest3 ;Start Gast3
    If $clickaktuell = $guest3want Then
    GUICtrlSetData($console, "Richtig! + 50 Punkte!")
    $score = $score + 50
    $countobj = $countobj + 1
    $pic3 = GUICtrlCreatePic(@ScriptDir & "\images\" & $draw3 & ".jpg", 400, 371, 113, 113)
    GUICtrlSetData($scoreshower, "Punkte: " & $score)
    $clickaktuell = 0
    ElseIf $clickaktuell = 0 Then
    GUICtrlSetData($console, "Wähle zuerst ein Objekt aus!")
    Else
    GUICtrlSetData($console, "Falsches Objekt für diesen Gast! - 50 Punkte!")
    $score = $score - 50
    $clickaktuell = 0
    GUICtrlSetData($scoreshower, "Punkte: " & $score)
    EndIf ;Gast 3 Ende

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

    EndSwitch

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

    If $countobj = 3 Then
    MsgBox(0, "Fertig", "Glückwunsch, du hast dieses Level abgeschlossen!")
    $divide = $divide - 2
    $round = $round + 1
    GUICtrlSetData($timeprogress, 0)
    reset()
    $time3 = 0 ;Setzt die Zeit wieder auf 0
    ExitLoop

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

    EndIf

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

    $time = 100 / $divide * _Timer_Diff($timer)
    $time = $time / 1000
    GUICtrlSetData($timeprogress, $time)

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

    If $time >= 100 Then ;Beende falls Zeitabgelaufen ist
    MsgBox(0, "Verloren", "Die Zeit ist abgelaufen. Leider verloren! Versuche es erneut! Du hast " & $round & " Runden geschafft und dabei " & $score & " Punkte erlangt!")
    Run("Eat'n_Sleep.exe")
    Exit

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

    EndIf

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

    WEnd ;Ende Level X

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

    WEnd;GROßE SCHLEIFE ENDE
    ;Abtrennung Ende

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

    Func reset()
    ;
    ;
    ;Resetting Start
    $countobj = 0
    $clickaktuell = 0
    $time = 0
    GUICtrlSetData($console, "")
    GUICtrlDelete($pic1)
    GUICtrlDelete($pic2)
    GUICtrlDelete($pic3)

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

    ;Resetting Ende
    ;
    ;
    EndFunc ;==>reset

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

    Viel Spaß!


    V2: Version 2 ist auch hochgeladen, Mauszeiger ändert sich nun auf den Bildern in "Die Hand" um, außerdem wird die Liste nun nicht mehr sortiert - Danke an autoBert
    Alte Version ist aus dem Verkehr gezogen, ab jetzt neue benutzen! Ist die im Anhang!

  • Nette idee
    das mit den grafiken geht bestimmt vielen so
    kannst ja mal paint.net oder gimp ausprobieren

  • nice gemacht, was du noch umsetzen könntest, wäre das sobald ein wunsch erfüllt ist, sich die inputbox aktuallisiert, das du immer den aktuellsten wunsch ganz oben hast ;)

  • Schone Spielidee, sauber umgesetzt.

    Wenn du die Liste so erstellst ist sie unsortiert:

    [autoit]

    $console = GUICtrlCreateList("", 10, 10, 180, 80,$LBS_NOTIFY)

    [/autoit]

    mfg (Auto)Bert

  • Ah, vielen Dank genau das brauch ich :)
    Ich änders um und lads bei Gelegenheit neu hoch

    Edit: Was für ein Include braucht das? Durchsuche gerade alles...
    Edit2: Habs dank Koda rausgefunden :) ist

    [autoit]


    #include <GUIListBox.au3>

    [/autoit]
  • es wäre wesentlich schwerer, wenn nicht
    Gast1
    Gast2
    Gast3
    direkt untereinander stehen würden, sondern diese Reihenfolge zufällig wäre!
    Ansonsten muss man sich nur die 3 Bestellungen anschauen um diese den Gästen zuzuordnen

  • Ich hab pro Richtige Antwort die Punkte auf +10000 gesetzt und pro falsche ebenfalls auf +10000. Und diese eine Vaiable, die die Schwierigkeit ändert hab ich auf +20 gestellt :party: