Zitateifach mal nach scripten von UEZ suchen und angucken
Danke, werde ich tun! ![]()
Edit:
Gibt es auch irgendwo ein Grundlagen-Tutorial
für GDI+, indem man Schritt für Schritt dort
hineingebracht wird?
MfG
qixx
Zitateifach mal nach scripten von UEZ suchen und angucken
Danke, werde ich tun! ![]()
Edit:
Gibt es auch irgendwo ein Grundlagen-Tutorial
für GDI+, indem man Schritt für Schritt dort
hineingebracht wird?
MfG
qixx
Danke erstmal für die Antworten. ![]()
Habe einen anderen Fehler gefunden,
warum die Score flackert. Ich hatte in der
Funktion _SetSnake() (Zeile 152) ein
GUICtrlSetData($Label_Score, "Spielstand: " & $Score)
hineingeschrieben. Dieses war völlig ohne Sinn.
Ich brauche das Skript deshalb ja nicht neu
hochladen. ![]()
Ich würde es ja gerne in GDI+ umsetzen. Leider
verstehe ich es aber nicht so wirklich.
MfG
qixx
Danke. ![]()
Mit dem Pause-Button hatte ich auch schon überlegt.
Den Gedanken habe ich aber verworfen, weil man ja
nicht Pause drücken soll und dann überlegen: "Wie
mache ich das am besten." ![]()
Kann ich aber einbauen, sollte kein Problem sein.
MfG
qixx
Hallo Leute,
ich hatte heute Langeweile und habe einfach mal
das klassische Spiel Snake nachgebaut.
Screenshot:
[Blockierte Grafik: http://www.abload.de/thumb/screenshot37il.jpg][Blockierte Grafik: http://www.abload.de/thumb/screenshot28ol8.jpg][Blockierte Grafik: http://www.abload.de/thumb/screenshot3ys1t.jpg]
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <misc.au3>
#include <array.au3>
Global $x[1]
Global $y[1]
Global $End = True
Global $up = False ;Wenn True, dann beginnt Snake in die Richtung
Global $down = False ;Wenn True, dann beginnt Snake in die Richtung
Global $left = False ;Wenn True, dann beginnt Snake in die Richtung
Global $right = True ;Wenn True, dann beginnt Snake in die Richtung
Global $CreateFood = False
Global $Foodx[1]
Global $Foody[1]
Global $Food[1]
Global $Wallx[1]
Global $Wally[1]
Global $Wall[1]
Global $Snake[2]
Global $Score = 0
Global $Speed = 200 ;Umso höher, deso langsamer (Sleep-Zeit)
Global $FoodScoreChange = 20 ;Wieviel Punkte es gibt, beim Fressen
$x[0] = 170
$y[0] = 120
$FoodScore = $FoodScoreChange
$hGui = GUICreate("SNAKE by qixx", 350, 250)
GUICtrlCreatePic(@ScriptDir & "\images\field.jpg", 0, 0, 350, 250)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
GUICtrlSetState(-1, $GUI_DISABLE)
$Label_Settings = GUICtrlCreateLabel("Einstellungen", 16, 16, 200, 17)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
GUICtrlSetColor(-1, 0xC8C8C8)
GUICtrlSetBkColor(-1, 0xFFFFFF)
$Label_Score = GUICtrlCreateLabel("Spielstand: 0", 16, 208, 200, 17)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
GUICtrlSetColor(-1, 0xC8C8C8)
GUICtrlSetBkColor(-1, 0xFFFFFF)
$Label_Length = GUICtrlCreateLabel("Schlangenlänge: 1", 16, 224, 200, 17)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
GUICtrlSetColor(-1, 0xC8C8C8)
GUICtrlSetBkColor(-1, 0xFFFFFF)
$Snake[0] = GUICtrlCreatePic(@ScriptDir & "\images\snake.gif", $x[0], $y[0], 10, 10)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
$Button = GUICtrlCreateLabel(" Start", 288, 224, 47, 15)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlSetBkColor(-1, 0xFFFFFF)
GUICtrlCreateLabel("Wände:", 24, 264, 48, 17)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetResizing(-1, $GUI_DOCKALL)
$Slider_Wall = GUICtrlCreateSlider(16, 280, 169, 25)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
$Label_Wall = GUICtrlCreateLabel("0", 72, 264, 18, 15)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
GUICtrlCreateLabel("Startrichtung:", 200, 264, 81, 17)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Radio_Up = GUICtrlCreateRadio("Hoch", 240, 280, 57, 17)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
$Radio_Down = GUICtrlCreateRadio("Runter", 240, 328, 57, 17)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
$Radio_Left = GUICtrlCreateRadio("Links", 200, 304, 49, 17)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
$Radio_Right = GUICtrlCreateRadio("Rechts", 280, 304, 65, 17)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
GUICtrlSetState(-1, $GUI_CHECKED)
$Button_CreateWalls = GUICtrlCreateButton("Platzieren", 104, 262, 73, 17, $WS_GROUP)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
GUICtrlCreateLabel("Geschwindigkeit:", 24, 312, 101, 17)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Slider_Speed = GUICtrlCreateSlider(16, 328, 169, 25)
GUICtrlSetLimit(-1, 3, 0)
GUICtrlSetData(-1, 1)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
$Label_Speed = GUICtrlCreateLabel("Mittel", 125, 312, 60, 15)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button
If GUICtrlRead($Button) = " Start" Then
$End = False
_NewGame()
GUICtrlSetData($Button, " 3")
Sleep(1000)
GUICtrlSetData($Button, " 2")
Sleep(1000)
GUICtrlSetData($Button, " 1")
Sleep(1000)
GUICtrlSetColor($Label_Settings, 0xFFFFFF)
GUICtrlSetData($Button, " Stop")
GUICtrlSetColor($Button, 0xC8C8C8)
$pos = WinGetPos($hGui)
MouseMove($pos[0] + $pos[2], $pos[1] + $pos[3], 0)
Else
$End = True
GUICtrlSetColor($Label_Settings, 0xC8C8C8)
GUICtrlSetData($Button, " Start")
GUICtrlSetColor($Button, 0xFF0000)
_EndGame()
EndIf
Case $Label_Settings
$pos = WinGetPos($hGui)
If $pos[3] < 300 Then
WinMove($hGui, "", $pos[0], $pos[1], 356, 385)
Else
WinMove($hGui, "", $pos[0], $pos[1], 356, 278)
EndIf
Case $Button_CreateWalls
;Wände erstellen
If UBound($Wall) > 1 Then
For $i = 0 To UBound($Wall)-1
GUICtrlDelete($Wall[$i])
Next
ReDim $Wall[1]
ReDim $Wallx[1]
ReDim $Wally[1]
EndIf
GUISetState($GUI_DISABLE, $hGui)
For $i = 0 To GUICtrlRead($Slider_Wall) -1
ReDim $Wall[UBound($Wall)+1]
ReDim $Wallx[UBound($Wall)+1]
ReDim $Wally[UBound($Wall)+1]
_CreateWall($i)
Next
GUISetState($GUI_ENABLE, $hGui)
Case $Slider_Wall
GUICtrlSetData($Label_Wall, GUICtrlRead($Slider_Wall))
Case $Slider_Speed
Switch GUICtrlRead($Slider_Speed)
Case 0
GUICtrlSetData($Label_Speed, "Langsam")
$Speed = 300
$FoodScore = $FoodScoreChange - $FoodScoreChange/2
Case 1
GUICtrlSetData($Label_Speed, "Mittel")
$Speed = 200
$FoodScore = $FoodScoreChange
Case 2
GUICtrlSetData($Label_Speed, "Schnell")
$Speed = 100
$FoodScore = $FoodScoreChange + $FoodScoreChange/2
Case 3
GUICtrlSetData($Label_Speed, "Sehr Schnell")
$Speed = 50
$FoodScore = $FoodScoreChange * 2
EndSwitch
Case $Radio_Up
If GUICtrlRead($Radio_Up) = $GUI_CHECKED Then
$up = True
$down = False
$left = False
$right = False
EndIf
Case $Radio_Down
If GUICtrlRead($Radio_Down) = $GUI_CHECKED Then
$up = False
$down = True
$left = False
$right = False
EndIf
Case $Radio_Left
If GUICtrlRead($Radio_Left) = $GUI_CHECKED Then
$up = False
$down = False
$left = True
$right = False
EndIf
Case $Radio_Right
If GUICtrlRead($Radio_Right) = $GUI_CHECKED Then
$up = False
$down = False
$left = False
$right = True
EndIf
EndSwitch
[/autoit] [autoit][/autoit] [autoit]If $CreateFood = True Then
Local $FoodOnWall = False
$Foodx[0] = Random(0, 34, 1) & "0"
$Foody[0] = Random(0, 24, 1) & "0"
If UBound($Wall) > 1 Then
For $i = 0 To UBound($Wall)-1
If $Foodx[0] = $Wallx[$i] And $Foody[0] = $Wally[$i] Then ;Wenn Futter auf Wand erscheint
$FoodOnWall = True
EndIf
Next
EndIf
If $FoodOnWall = False Then ;Wenn Futter nicht auf Wand, Futter setzen ; Sonst nochmal durchführen ($CreateFood = True)
$Food[0] = GUICtrlCreatePic(@ScriptDir & "\images\food.gif", $Foodx[0], $Foody[0], 10, 10)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
GUICtrlSetState(-1, $GUI_ENABLE)
$CreateFood = False
EndIf
EndIf
If $End = False Then
If _IsPressed(26)Then
If $down = False Then
$up = True
$down = False
$left = False
$right = False
EndIf
ElseIf _IsPressed(28) Then
If $up = False Then
$up = False
$down = True
$left = False
$right = False
EndIf
ElseIf _IsPressed(25) Then
If $right = False Then
$up = False
$down = False
$left = True
$right = False
EndIf
ElseIf _IsPressed(27) Then
If $left = False Then
$up = False
$down = False
$left = False
$right = True
EndIf
EndIf
_SetSnake()
[/autoit] [autoit][/autoit] [autoit];Futter fressen
For $i = 0 To UBound($Food)-1
If $x[0] = $Foodx[$i] And $y[0] = $Foody[$i] Then
GUICtrlDelete($Food[$i])
$Score += $FoodScore
GUICtrlSetData($Label_Score, "Spielstand: " & $Score)
_LongerSnake()
EndIf
Next
EndIf
WEnd
[/autoit] [autoit][/autoit] [autoit]Func _SetSnake()
If UBound($x) > 0 Then
For $i = UBound($x)-1 To 1 Step -1
$x[$i] = $x[$i-1]
Next
For $i = UBound($y)-1 To 1 Step -1
$y[$i] = $y[$i-1]
Next
EndIf
If $End = False Then
[/autoit] [autoit][/autoit] [autoit]If $up = True Then
$y[0] -= 10
ElseIf $down = True Then
$y[0] += 10
ElseIf $left = True Then
$x[0] -= 10
ElseIf $right = True Then
$x[0] += 10
EndIf
;Rand getroffen
If $x[0] < 0 Or $x[0] > 340 Or $y[0] < 0 Or $y[0] > 240 Then
_EndGame()
Return
EndIf
;Wand getroffen
If UBound($Wall) > 1 Then
For $i = 0 To UBound($Wall)
If $x[0] = $Wallx[$i] And $y[0] = $Wally[$i] Then
_EndGame()
Return
EndIf
Next
EndIf
;Snake berührt sich selbst
If UBound($Snake) > 2 Then
For $i = 1 To UBound($Snake)-2
If $x[0] = $x[$i] And $y[0] = $y[$i] Then
_EndGame()
Return
EndIf
Next
EndIf
$End = False
For $i = 0 To UBound($Snake)-2
GUICtrlSetPos($Snake[$i], $x[$i], $y[$i])
Next
Sleep($Speed)
EndIf
EndFunc
Func _LongerSnake()
$CreateFood = True
ReDim $Snake[UBound($Snake)+1]
ReDim $x[UBound($x)+1]
ReDim $y[UBound($y)+1]
$Snake[UBound($Snake)-2] = GUICtrlCreatePic(@ScriptDir & "\images\snake.gif", $x[UBound($Snake)-2], $y[UBound($Snake)-2], 10, 10)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
GUICtrlSetData($Label_Length, "Schlangenlänge: " & UBound($Snake)-1)
EndFunc
Func _NewGame()
GUICtrlSetState($Radio_Up, $GUI_DISABLE)
GUICtrlSetState($Radio_Down, $GUI_DISABLE)
GUICtrlSetState($Radio_Left, $GUI_DISABLE)
GUICtrlSetState($Radio_Right, $GUI_DISABLE)
GUICtrlSetState($Slider_Wall, $GUI_DISABLE)
GUICtrlSetState($Button_CreateWalls, $GUI_DISABLE)
GUICtrlSetState($Slider_Speed, $GUI_DISABLE)
_GetStartPosition()
[/autoit] [autoit][/autoit] [autoit]If UBound($Snake) > 1 Then
For $i = 1 To UBound($Snake)-1
GUICtrlDelete($Snake[$i])
Next
EndIf
For $i = 0 To UBound($Food)-1
GUICtrlDelete($Food[$i])
Next
Redim $Foodx[1]
ReDim $Foody[1]
ReDim $Food[1]
ReDim $Snake[2]
ReDim $x[1]
ReDim $y[1]
$x[0] = 170
$y[0] = 120
GUICtrlSetPos($Snake[0], $x[0], $y[0])
$CreateFood = True
$Score = 0
GUICtrlSetData($Label_Score, "Spielstand: " & $Score)
GUICtrlSetData($Label_Length, "Schlangenlänge: 1 ")
EndFunc
Func _EndGame()
GUICtrlSetState($Radio_Up, $GUI_ENABLE)
GUICtrlSetState($Radio_Down, $GUI_ENABLE)
GUICtrlSetState($Radio_Left, $GUI_ENABLE)
GUICtrlSetState($Radio_Right, $GUI_ENABLE)
GUICtrlSetState($Slider_Wall, $GUI_ENABLE)
GUICtrlSetState($Button_CreateWalls, $GUI_ENABLE)
GUICtrlSetState($Slider_Speed, $GUI_ENABLE)
$End = True
If MsgBox(4,"Snake by qixx", "Das Spiel ist vorbei." & @CRLF & @CRLF & "Wände: " & UBound($Wall)-1 & @CRLF & "Geschwindigkeit: " & GUICtrlRead($Label_Speed) & @CRLF & "Deine Punktzahl: " & StringReplace(GUICtrlRead($Label_Score), "Spielstand: ","") & @CRLF & @CRLF & "Nochmal spielen?") = 6 Then
GUICtrlSetColor($Label_Settings, 0xC8C8C8)
GUICtrlSetData($Button, " Start")
GUICtrlSetColor($Button, 0xFF0000)
_GetStartPosition()
Else
Exit
EndIf
EndFunc
Func _CreateWall($i)
Local $WallAlreadyExists = False
$Wallx[$i] = Random(0, 34, 1) & "0"
$Wally[$i] = Random(0, 24, 1) & "0"
If UBound($Wall) > 1 Then
For $i2 = 0 To UBound($Wall)-3
If $Wallx[$i] = $Wallx[$i2] And $Wally[$i] = $Wally[$i2] Then
$WallAlreadyExists = True
EndIf
Next
EndIf
If $WallAlreadyExists = False Then
$Wall[$i] = GUICtrlCreatePic(@ScriptDir & "\images\wall.gif", $Wallx[$i], $Wally[$i], 10, 10)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
GUICtrlSetState(-1, $GUI_ENABLE)
Else
ConsoleWrite("Wand schon vorhanden - Neuberechnung" & @CRLF)
_CreateWall($i)
EndIf
EndFunc
Func _GetStartPosition()
If GUICtrlRead($Radio_Up) = $GUI_CHECKED Then
$up = True
$down = False
$left = False
$right = False
EndIf
If GUICtrlRead($Radio_Down) = $GUI_CHECKED Then
$up = False
$down = True
$left = False
$right = False
EndIf
If GUICtrlRead($Radio_Left) = $GUI_CHECKED Then
$up = False
$down = False
$left = True
$right = False
EndIf
If GUICtrlRead($Radio_Right) = $GUI_CHECKED Then
$up = False
$down = False
$left = False
$right = True
EndIf
EndFunc
ToDo:- Levels mit Wänden- Schwierigkeitsstufen
Der Code als .au3 und die Bilder sind im Anhang!
(Aktuellste Version: 1.3)
MfG
qixx
Ok, danke.
Könntst du mir trotzdem erklären, was
ich genau machen muss? ![]()
Dann muss ich das halt auf die Weise machen.
MfG
qixx
Ja, aber es soll jeder hosten können.^^
Also einfach mit einem Klick ein Spiel
öffnen und ein Anderer kann connecten. ![]()
MfG
qixx
Einen Dlink DI-304. Ja... ISDN... -.-
Aber ich denke, damit hat sich das Thema dann
auch schon erledigt, da ich ein Spiel programmieren
wollte, dass man mit mehreren gleichzeitig übers
Internet spielen kann. Aber das ist ja doof, wenn
jeder immer manuell etwas einstellen muss. ![]()
Achja, danke erstmal. ![]()
MfG
qixx
Hallo Leute,
ich habe in folgendem Thread
https://autoit.de/index.php?page=Thread&postID=3492
gesehen, dass gtaspider und Eddy_Erpel eine Lösung
gefunden haben, wie man TCP über das Internet zum
Laufen bekommt. Verstanden habe ich da aber nichts.^^
Gibt es denn eine einfache Möglichkeit, wie man das
hinbekommen könnte, ohne ein weiteres Programm wie
Hamachi oder so? ![]()
(Vorkenntnisse mit TCP habe ich, aber es klappte immer
nur im lokalen Netzwerk)
MfG
qixx
Schau' dir mal
[autoit]Execute()
[/autoit]an. Vielleicht hilft dir das weiter. ![]()
MfG
qixx
Ich werde wohl sowas machen, wie Jonathan vorgeschlagen hat.
Es sei denn, jemand hat eine bessere Idee. ![]()
MfG
qixx
Die Rand OHG?
Nein, unsere heißt Grossmann OHG. ![]()
Und ReWe ist doch total easy. Habe da eine 1 mit
100%! ![]()
@ Jonathan: Das ist eine super Idee! Vielen Dank! ![]()
Mal schauen, vielleicht werde ich das verwenden! ![]()
Hmm, hört sich net an. ![]()
Ist aber irgendwie nicht so das, was wir machen..
Haben halt z.B. so eine Musterfirma die Papier
verkauft. Irgendwie etwas dafür suche ich. ![]()
Aber danke für deine Antwort!
Ich hoffe, mir fällt noch was ein bis zum 21.04. ![]()
MfG
qixx
Hmm.. Sowas eher nicht. Also es geht in die Richtung
BWL. Also Kaufen, verkaufen, etc. ![]()
Wenn du verstehst was ich meine. ![]()
Aber schonmal echt danke für die Idee! ![]()
MfG
qixx
Ok, aber danke. ![]()
MfG
qixx
Hmm Randbedingungen nicht direkt.
Aber ich denke mal, dass es am besten wäre,
wenn das in die "wirtschaftliche Richtung" gehen
würde. Brutto-Netto-Rechner haben wir z.B. im
Unterricht gemacht. ![]()
MfG
qixx
Hi Leute,
ich muss in ein paar Wochen für die Schule eine
Projektarbeit anfertigen. Diese ist im Bereich Programmierung
und ich habe absolut keine Ahnung, was ich machen soll...
Ich muss zwar in VB programmieren und nicht AutoIt, aber
das ist ja relativ das gleiche. ![]()
Habt ihr vielleicht eine Idee, was man dort so machen könnte?
Vielen Dank im Voraus. ![]()
MfG
qixx
Mein Rekord liegt bei 1:50min
Meiner liegt bei 53 Sekunden. Beim erstellen des
Screenshots entstanden. ![]()
MfG
qixx
[Blockierte Grafik: http://www.abload.de/img/logok4de.jpg]
Hallo Leute,
vielleicht seid ihr auch begeisterte "Rubic Cuber" (Zauberwürfel). ![]()
Ich jedenfalls bin es und habe mir überlegt, dass ich gerne mal
die Zeit messen möchte, in der ich einen Cube lösen kann. Was
würde sich dort nicht eher anbieten, als einen Timer zu programmiern. ![]()
Das habe ich in die Tat umgesetzt und werde euch das Ergebnis
jetzt hier präsentieren.
Was kann der CubeTimer?
Todo:
Screenshots:
[Blockierte Grafik: http://www.abload.de/thumb/screenshot1h25n.jpg][Blockierte Grafik: http://www.abload.de/thumb/screenshot2v1h3.jpg]
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.2.0
Author: qixx (http://www.autoit.de)
Credits:
#ce ----------------------------------------------------------------------------
#include <Timers.au3>
#include <misc.au3>
#include <GuiListView.au3>
#include <GuiListBox.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <EditConstants.au3>
Global $MinRed = IniRead(@AppDataDir & "\CubeTimer.ct", "CubeTimer Settings", "MinRed", 2)
Global $SecRed = IniRead(@AppDataDir & "\CubeTimer.ct", "CubeTimer Settings", "SecRed", 0) ;Ab 2 Minuten ist das Icon Rot
Global $MinYellow = IniRead(@AppDataDir & "\CubeTimer.ct", "CubeTimer Settings", "MinYellow", 1)
Global $SecYellow = IniRead(@AppDataDir & "\CubeTimer.ct", "CubeTimer Settings", "SecYellow", 5) ;Ab 1 Minuten und 5 Sekunden ist das Icon Gelb
If IniRead(@AppDataDir & "\CubeTimer.ct", "CubeTimer Settings", "Splash", "1") = "1" Then
SplashImageOn("Cube Timer", @ScriptDir & "\images\splash.jpg", 460, 267, -1, -1, 3)
Sleep(3000)
SplashOff()
EndIf
$MainGUI = GUICreate("CubeTimer", 510, 202, -1, -1, $WS_POPUP)
GUISetBkColor(0xFFFFFF)
GUICtrlCreatePic(@ScriptDir & "\images\bg.jpg", 0, 0, 510, 202)
GUICtrlSetState(-1, $GUI_DISABLE)
$LabelTime = GUICtrlCreateLabel("00:00.000", 32, 72, 252, 65)
GUICtrlSetFont(-1, 45, 800, 0, "Arial Narrow")
GUICtrlSetColor(-1, 0x34b0ff)
GUICtrlCreatePic(@ScriptDir & "\images\logo.jpg", 1, 1, 335, 69, -1, $GUI_WS_EX_PARENTDRAG)
$SettingsButton = GUICtrlCreatePic(@ScriptDir & "\images\settings.jpg", 465, 6, 10, 10)
$MinimizeButton = GUICtrlCreatePic(@ScriptDir & "\images\line.jpg", 479, 6, 10, 10)
$ExitButton = GUICtrlCreatePic(@ScriptDir & "\images\x.jpg", 493, 6, 10, 10)
GUICtrlCreateLabel("", 335, 1, 125, 20, -1, $GUI_WS_EX_PARENTDRAG)
[/autoit] [autoit][/autoit] [autoit]$List = GUICtrlCreateListView("", 336, 24, 165, 149, 0x00200000)
_GUICtrlListView_InsertColumn($List, 0, "Datum", 80)
_GUICtrlListView_InsertColumn($List, 1, "Zeit", 64)
$Nr = IniReadSection(@AppDataDir & "\CubeTimer.ct", "CubeTimer Times")
If IsArray($Nr) Then
For $i = 1 To $Nr[0][0]
GUICtrlCreateListViewItem(IniRead(@AppDataDir & "\CubeTimer.ct", "CubeTimer Times", "Time" & $i, ""), $List)
$AnalysString = StringSplit(IniRead(@AppDataDir & "\CubeTimer.ct", "CubeTimer Times", "Time" & $i, ""), "|")
_Analysieren($AnalysString[2], $i - 1)
Next
EndIf
$ButtonClear = GUICtrlCreateLabel(" Liste leeren", 428, 176, 73, 15)
GUICtrlSetBkColor(-1, 0x34b0ff)
GUICtrlSetColor(-1, 0xffffff)
GUICtrlCreateLabel("Starten und Stoppen mit 'Leertaste'", 82, 142, 175, 17)
GUICtrlSetColor(-1, 0xcccccc)
GUISetState(@SW_SHOW)
$SettingsGUI = GUICreate("Einstellungen", 162, 178, -1, -1, $WS_POPUP)
GUISetBkColor(0xFFFFFF)
GUICtrlCreatePic(@ScriptDir & "\images\sbg.jpg", 0, 0, 162, 178)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateLabel("Einstellungen", 8, 5, 146, 17, -1, $GUI_WS_EX_PARENTDRAG)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xcccccc)
;Grün
GUICtrlCreateLabel("", 8, 24, 20, 20)
GUICtrlSetBkColor(-1, 0x00FF00)
GUICtrlCreateInput("00", 32, 24, 25, 21, BitOR($ES_AUTOHSCROLL, $ES_READONLY))
GUICtrlCreateLabel(":", 58, 24, 4, 22)
GUICtrlSetFont(-1, 10, 800, 0, "Arial Black")
GUICtrlSetColor(-1, 0x000000)
GUICtrlCreateInput("00", 64, 24, 25, 21, BitOR($ES_AUTOHSCROLL, $ES_READONLY))
GUICtrlCreateLabel(".", 91, 27, 8, 22)
GUICtrlSetFont(-1, 10, 800, 0, "Arial Black")
GUICtrlSetColor(-1, 0x000000)
GUICtrlCreateInput("000", 96, 24, 33, 21, BitOR($ES_AUTOHSCROLL, $ES_READONLY))
;Gelb
GUICtrlCreateLabel("", 8, 48, 20, 20)
GUICtrlSetBkColor(-1, 0xFFFF00)
$sYellowMinInput = GUICtrlCreateInput("01", 32, 48, 25, 21, $ES_NUMBER)
GUICtrlCreateLabel(":", 58, 48, 8, 22)
GUICtrlSetFont(-1, 10, 800, 0, "Arial Black")
GUICtrlSetColor(-1, 0x000000)
$sYellowSecInput = GUICtrlCreateInput("30", 64, 48, 25, 21, $ES_NUMBER)
GUICtrlCreateLabel(".", 91, 52, 8, 22)
GUICtrlSetFont(-1, 10, 800, 0, "Arial Black")
GUICtrlSetColor(-1, 0x000000)
GUICtrlCreateInput("000", 96, 48, 33, 21, BitOR($ES_AUTOHSCROLL, $ES_READONLY))
;Rot
GUICtrlCreateLabel("", 8, 72, 20, 20)
GUICtrlSetBkColor(-1, 0xFF0000)
$sRedMinInput = GUICtrlCreateInput("02", 32, 72, 25, 21, $ES_NUMBER)
GUICtrlCreateLabel(":", 58, 72, 8, 22)
GUICtrlSetFont(-1, 10, 800, 0, "Arial Black")
GUICtrlSetColor(-1, 0x000000)
$sRedSecInput = GUICtrlCreateInput("30", 64, 72, 25, 21, $ES_NUMBER)
GUICtrlCreateLabel(".", 91, 74, 8, 22)
GUICtrlSetFont(-1, 10, 800, 0, "Arial Black")
GUICtrlSetColor(-1, 0x000000)
GUICtrlCreateInput("000", 96, 72, 33, 21, BitOR($ES_AUTOHSCROLL, $ES_READONLY))
;Anderes
$sCheckESC = GUICtrlCreateCheckbox("Mit ESC Beenden", 8, 104, 105, 17)
If IniRead(@AppDataDir & "\CubeTimer.ct", "CubeTimer Settings", "EndESC", "1") = "1" Then
GUICtrlSetState($sCheckESC, $GUI_CHECKED)
Else
GUICtrlSetState($sCheckESC, $GUI_UNCHECKED)
EndIf
$sCheckSplash = GUICtrlCreateCheckbox("Bild beim Starten anzeigen", 8, 120, 145, 17)
If IniRead(@AppDataDir & "\CubeTimer.ct", "CubeTimer Settings", "Splash", "1") = "1" Then
GUICtrlSetState($sCheckSplash, $GUI_CHECKED)
Else
GUICtrlSetState($sCheckSplash, $GUI_UNCHECKED)
EndIf
$sOk = GUICtrlCreateLabel(" Ok", 40, 152, 41, 15)
GUICtrlSetBkColor(-1, 0x34b0ff)
GUICtrlSetColor(-1, 0xffffff)
$sCancel = GUICtrlCreateLabel(" Abbrechen", 88, 152, 65, 15)
GUICtrlSetBkColor(-1, 0x34b0ff)
GUICtrlSetColor(-1, 0xffffff)
$hImage = _GUIImageList_Create(16, 16, 5, 3)
_GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($List, 0xFF0000, 16, 16)) ;Rot
_GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($List, 0xFFFF00, 16, 16)) ;Gelb
_GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($List, 0x00FF00, 16, 16)) ;Grün
_GUICtrlListView_SetImageList($List, $hImage, 1)
If IniRead(@AppDataDir & "\CubeTimer.ct", "CubeTimer Settings", "EndESC", "1") = "1" Then
HotKeySet("{ESC}", "_Exit")
EndIf
Func _Timer()
[/autoit] [autoit][/autoit] [autoit]Local $starttime = _Timer_Init(), $Min = 0
While 1
Sleep(10)
$time = StringSplit(_Timer_Diff($starttime), ".")
$Sec = StringTrimRight($time[1], 3) - 60 * $Min
If $Sec = "" Then $Sec = 0
If $Sec = "60" Then
$Min = $Min + 1
EndIf
If StringLen($Min) = 1 Then $Min = "0" & $Min
If StringLen($Sec) = 1 Then $Sec = "0" & $Sec
$ElapsedTime = $Min & ":" & $Sec & "." & StringTrimLeft($time[1], StringLen($time[1]) - 3)
GUICtrlSetData($LabelTime, $ElapsedTime)
If $Sec > 0 Then
If _IsPressed(20) Then
GUICtrlCreateListViewItem(@MDAY & "." & @MON & "." & @YEAR & "|" & $ElapsedTime, $List)
ClipPut(@AppDataDir & "\CubeTimer.ct")
For $i = 1 To _GUICtrlListView_GetItemCount($List)
IniWrite(@AppDataDir & "\CubeTimer.ct", "CubeTimer Times", "Time" & $i, _GUICtrlListView_GetItemText($List, $i - 1, 0) & "|" & _GUICtrlListView_GetItemText($List, $i - 1, 1))
Next
_Analysieren($ElapsedTime, _GUICtrlListView_GetItemCount($List) - 1)
MsgBox(0, "Deine Zeit", "Deine erreichte Zeit: " & $ElapsedTime)
ExitLoop
EndIf
EndIf
WEnd
EndFunc ;==>_Timer
Func _Exit()
Exit
EndFunc ;==>_Exit
Func _Analysieren($String, $Position)
;Farbicon eintragen
;Return 0 = Rot
;Return 1 = Gelb
;Return 2 = Grün
$Analysis = StringSplit($String, ":.")
For $i = 0 To 9
If $Analysis[1] = "0" & $i Then $Analysis[1] = $i
Next
For $i = 0 To 9
If $Analysis[2] = "0" & $i Then $Analysis[2] = $i
Next
If $Analysis[1] >= $MinRed Then
If $Analysis[2] >= $SecRed Then
_GUICtrlListView_SetItemImage($List, $Position, 0)
Return 0
Else
If $Analysis[1] >= $MinYellow Then
If $Analysis[2] >= $SecYellow Then
_GUICtrlListView_SetItemImage($List, $Position, 1)
Return 1
Else
_GUICtrlListView_SetItemImage($List, $Position, 2)
Return 2
EndIf
EndIf
EndIf
Else
If $Analysis[1] >= $MinYellow Then
If $Analysis[2] >= $SecYellow Then
_GUICtrlListView_SetItemImage($List, $Position, 1)
Return 1
Else
_GUICtrlListView_SetItemImage($List, $Position, 2)
Return 2
EndIf
Else
_GUICtrlListView_SetItemImage($List, $Position, 2)
Return 2
EndIf
EndIf
EndFunc ;==>_Analysieren
While 1
Sleep(10)
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
_Exit()
Case $ButtonClear
For $i = 0 To _GUICtrlListView_GetItemCount($List) - 1
_GUICtrlListView_DeleteItem(GUICtrlGetHandle($List), 0)
Next
IniDelete(@AppDataDir & "\CubeTimer.ct", "CubeTimer Times")
Case $SettingsButton
GUICtrlSetData($sRedMinInput, $MinRed)
GUICtrlSetData($sRedSecInput, $SecRed)
GUICtrlSetData($sYellowMinInput, $MinYellow)
GUICtrlSetData($sYellowSecInput, $SecYellow)
$pos = WinGetPos($MainGUI)
WinMove($SettingsGUI, "", $pos[0] + 10, $pos[1] + 10)
GUISetState(@SW_SHOW, $SettingsGUI)
Case $MinimizeButton
GUISetState(@SW_MINIMIZE)
Case $ExitButton
_Exit()
Case $sOk
$MinRed = GUICtrlRead($sRedMinInput)
$SecRed = GUICtrlRead($sRedSecInput)
$MinYellow = GUICtrlRead($sYellowMinInput)
$SecYellow = GUICtrlRead($sYellowSecInput)
IniWrite(@AppDataDir & "\CubeTimer.ct", "CubeTimer Settings", "MinRed", $MinRed)
IniWrite(@AppDataDir & "\CubeTimer.ct", "CubeTimer Settings", "SecRed", $SecRed)
IniWrite(@AppDataDir & "\CubeTimer.ct", "CubeTimer Settings", "MinYellow", $MinYellow)
IniWrite(@AppDataDir & "\CubeTimer.ct", "CubeTimer Settings", "SecYellow", $SecYellow)
If GUICtrlRead($sCheckESC) = $GUI_CHECKED Then
HotKeySet("{ESC}", "_Exit")
IniWrite(@AppDataDir & "\CubeTimer.ct", "CubeTimer Settings", "EndESC", "1")
Else
HotKeySet("{ESC}")
IniWrite(@AppDataDir & "\CubeTimer.ct", "CubeTimer Settings", "EndESC", "0")
EndIf
If GUICtrlRead($sCheckSplash) = $GUI_CHECKED Then
IniWrite(@AppDataDir & "\CubeTimer.ct", "CubeTimer Settings", "Splash", "1")
Else
IniWrite(@AppDataDir & "\CubeTimer.ct", "CubeTimer Settings", "Splash", "0")
EndIf
For $i = 0 To _GUICtrlListView_GetItemCount($List) - 1
_GUICtrlListView_DeleteItem(GUICtrlGetHandle($List), 0)
Next
$Nr = IniReadSection(@AppDataDir & "\CubeTimer.ct", "CubeTimer Times")
If IsArray($Nr) Then
For $i = 1 To $Nr[0][0]
GUICtrlCreateListViewItem(IniRead(@AppDataDir & "\CubeTimer.ct", "CubeTimer Times", "Time" & $i, ""), $List)
$AnalysString = StringSplit(IniRead(@AppDataDir & "\CubeTimer.ct", "CubeTimer Times", "Time" & $i, ""), "|")
If StringLen($AnalysString[2]) = 1 Then $AnalysString[2] = "0" & $AnalysString[2]
_Analysieren($AnalysString[2], $i - 1)
Next
EndIf
GUISetState(@SW_HIDE, $SettingsGUI)
WinActivate($MainGUI)
Case $sCancel
GUISetState(@SW_HIDE, $SettingsGUI)
WinActivate($MainGUI)
EndSwitch
[/autoit] [autoit][/autoit] [autoit]If _IsPressed(20) And WinActive($MainGUI) Then ;Leertaste
_Timer()
EndIf
If StringLen(GUICtrlRead($sRedMinInput)) > 2 Then
GUICtrlSetData($sRedMinInput, StringTrimRight(GUICtrlRead($sRedMinInput), StringLen(GUICtrlRead($sRedMinInput)) - 2))
EndIf
If StringLen(GUICtrlRead($sRedSecInput)) > 2 Then
GUICtrlSetData($sRedSecInput, StringTrimRight(GUICtrlRead($sRedSecInput), StringLen(GUICtrlRead($sRedSecInput)) - 2))
EndIf
If StringLen(GUICtrlRead($sYellowMinInput)) > 2 Then
GUICtrlSetData($sYellowMinInput, StringTrimRight(GUICtrlRead($sYellowMinInput), StringLen(GUICtrlRead($sYellowMinInput)) - 2))
EndIf
If StringLen(GUICtrlRead($sYellowSecInput)) > 2 Then
GUICtrlSetData($sYellowSecInput, StringTrimRight(GUICtrlRead($sYellowSecInput), StringLen(GUICtrlRead($sYellowSecInput)) - 2))
EndIf
WEnd
[/autoit]Im Anhang sind die Bilder und der Code als .au3.
MfG
qixx
Bei deinem GUI: Wenn du auf den Button für
Neue Farbe klickst, dann nimmt der ab dann schon
die Farbe auf. Denn der Mausklick wird schon abgefragt.
Da musst du dir was anderes einfallen lassen. ![]()
Du könntest z.B. ein Sleep einbauen. Denn es
ist unwahrscheinlich, dass jemand den Button ne
Sekunde lang drückt, o.Ä..
Case $hButton2
GUICtrlSetBkColor($hLabel, 0xFFFFFF)
Sleep(500)
$Farbwahl = False
Vielleicht solltest du auch unter der Farbe, die im
GUI angezeigt wird, den Hexa-Code hinschreiben. ![]()
MfG
qixx