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
#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
#ce
[/autoit] [autoit][/autoit] [autoit]#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Timers.au3>
#include <GUIListBox.au3>
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
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)
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
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
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
Sleep(1000)
$timeprogress = GUICtrlCreateProgress(10, 540, 497, 45)
$timer = _Timer_Init()
While 1 ;Level X Start
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $coffee_machine ;Kaffee Start
$clickaktuell = 1;Kaffee Ende
Case $cake_full ;Kuchen Start
$clickaktuell = 2 ;Kuchen Ende
Case $ice_cream ;Eis start
$clickaktuell = 3 ;Eis Ende
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
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
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
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
EndIf
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$time = 100 / $divide * _Timer_Diff($timer)
$time = $time / 1000
GUICtrlSetData($timeprogress, $time)
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
EndIf
[/autoit] [autoit][/autoit] [autoit]WEnd ;Ende Level X
[/autoit] [autoit][/autoit] [autoit]WEnd;GROßE SCHLEIFE ENDE
;Abtrennung Ende
Func reset()
;
;
;Resetting Start
$countobj = 0
$clickaktuell = 0
$time = 0
GUICtrlSetData($console, "")
GUICtrlDelete($pic1)
GUICtrlDelete($pic2)
GUICtrlDelete($pic3)
;Resetting Ende
;
;
EndFunc ;==>reset
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!