|
You last visited: Today at 02:15
Advertisement
[GUI]ProgressBar Problem
Discussion on [GUI]ProgressBar Problem within the AutoIt forum part of the Coders Den category.
07/17/2012, 13:09
|
#1
|
elite*gold: 0
Join Date: Mar 2010
Posts: 91
Received Thanks: 3
|
[GUI]ProgressBar Problem
Also die erste ProgressBar macht was sie soll. Nach jeden Mal "Trinken" drücken wird 15 hinzugefügt und angezeigt. Und nach 30 Sekunden werden 30 abgezogen.
Bei der zweiten ProgressBar klappt das Abziehen nicht so wie gewünscht.
So wird um 11 (Uhrzeit im "Spiel") oder um 18 Uhr nicht nur 25 abgezogen sondern direkt alles...
Ich weiß nicht mehr weiter & deshalb wende ich mich an euch.
Ich hoffe ihr wisst eine Lösung =)
Hier der Code:
Code:
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.8.1
Author: Piper332
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
; Script Start - Add your code below here
#RequireAdmin
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
Global $Durst, $Add_1 = 30 , $zeit = "0:00", $stu = 0, $minu = 0, $mdiff = 5, $Add_2 = 35, $sturl = "00"
$GUI = GUICreate("Tomatogotchi",500,300,50,50)
$time = GUICtrlCreateLabel("Time:" & $zeit & "",440,10,50,20)
$prog1 = GUICtrlCreateProgress(10, 10, 200, 20)
$durst = GUICtrlCreateButton("Trinken", 250, 10, 70, 20)
$prog2 = GUICtrlCreateProgress(10, 40, 200, 20)
$hunger = GUICtrlCreateButton("Essen[Möhre]", 250, 40, 70, 20)
GUISetState()
GUICtrlSetData($prog1,$Add_1)
GUICtrlSetData($prog2,$Add_2)
$wait = 20; Warte 20ms bis zum nächsten Schritt
$s = 0; Progressbar-Startposition
$DurstRef = TimerInit()
$minute = TimerInit()
While 1
$msg = GUIGetMsg()
Select
Case $msg = -3
ExitLoop
Case $msg = $durst
$Add_1 += 15
If $Add_1 = 100 Or $Add_1 > 100 Then
$Add_1 = 100
EndIf
GUICtrlSetData($prog1,$Add_1)
Case $msg = $hunger
$Add_2 += 35
If $Add_2 = 100 Or $Add_2 > 100 Then
$Add_2 = 100
EndIf
GUICtrlSetData($prog2,$Add_2)
EndSelect
If TimerDiff($DurstRef) > 30000 Then
$Add_1 -= 30
If $Add_1 = 0 Or $Add_1 < 0 Then
$Dead = 1
$Add_1 = 0
EndIf
GUICtrlSetData($prog1,$Add_1)
$DurstRef = TimerInit()
Endif
If $sturl = 11 Or $sturl = 18 Then ; <--- HungerRef
$Add_2 = GUICtrlRead($prog2)
$Add_2 -= 25
If $Add_2 = 0 Or $Add_2 < 0 Then
$Dead = 1
$Add_2 = 0
EndIf
GUICtrlSetData($prog2,$Add_2)
EndIf
If $minu > 59 Then
$stu +=1
$minu = 0
EndIf
If $stu = 24 Then
$stu = 0
EndIf
If TimerDiff($minute) > $mdiff Then
$minu += 1
$minute = TimerInit()
EndIf
If $stu = 0 Then $sturl = "00"
If $stu = 1 Then $sturl = "01"
If $stu = 2 Then $sturl = "02"
If $stu = 3 Then $sturl = "03"
If $stu = 4 Then $sturl = "04"
If $stu = 5 Then $sturl = "05"
If $stu = 6 Then $sturl = "06"
If $stu = 7 Then $sturl = "07"
If $stu = 8 Then $sturl = "08"
If $stu = 9 Then $sturl = "09"
If $minu = 0 Then $mrl = "00"
If $minu = 1 Then $mrl = "01"
If $minu = 2 Then $mrl = "02"
If $minu = 3 Then $mrl = "03"
If $minu = 4 Then $mrl = "04"
If $minu = 5 Then $mrl = "05"
If $minu = 6 Then $mrl = "06"
If $minu = 7 Then $mrl = "07"
If $minu = 8 Then $mrl = "08"
If $minu = 9 Then $mrl = "09"
If $stu > 9 Then $sturl = $stu
If $minu > 9 Then $mrl = $minu
$zeit = "" & $sturl & ":" & $mrl & ""
GUICtrlSetData($time,$zeit)
WEnd
|
|
|
07/17/2012, 15:30
|
#2
|
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,255
|
Liegt an der Abfrage. Du fragst nur noch den Stunden ab und vergisst dabei, dass es für ca. eine halbe sec. 11Uhr ist (die Minuten müssen ja noch vergehen).
Und in der Zeit zieht er deiner Progressbar immer wieder 25 ab.
Würde z. B. so klappen:
PHP Code:
If ($sturl = 11 And $minu < 2) Or ($sturl = 18 And $minu < 2) Then
(Wobei das glaube ich auch manchmal failen würde, gibt noch andere möglichkeiten, kann nur grad nicht denken  )
Und die 20 Abfragen weiter unten kannst du ganz schnell in einer Schleife lösen:
PHP Code:
For $i = 0 To 9 If $stu = $i Then $sturl = "0"&$i If $minu = $i Then $mrl = "0"&$i Next
|
|
|
07/17/2012, 16:01
|
#3
|
elite*gold: 0
Join Date: Mar 2010
Posts: 91
Received Thanks: 3
|
ahh... stimmt ja.. es wird ja mehrmals ausgeführt, weil die bedingung länger erfüllt ist >.<
Ich habe es jetzt so gelöst:
Code:
Global $Durst, $Add_1 = 30 , $zeit = "0:00", $stu = 0, $minu = 0, $mdiff = 50, $Add_2 = 35, $sturl = "00", $minusdebug = 0
[...]
Code:
If ($sturl = 11 And $minusdebug = 0) Or ($sturl = 18 And $minusdebug = 0) Then ; <--- HungerRef
$minusdebug = 1
$Add_2 = GUICtrlRead($prog2)
$Add_2 -= 25
If $Add_2 = 0 Or $Add_2 < 0 Then
$Dead = 1
$Add_2 = 0
EndIf
GUICtrlSetData($prog2,$Add_2)
EndIf
If $sturl = 12 or $sturl = 19 Then
$minusdebug = 0
EndIf
[...]
und danke hierfür:
Code:
For $i = 0 To 9
If $stu = $i Then $sturl = "0"&$i
If $minu = $i Then $mrl = "0"&$i
Next
Das wird mir demnächst einiges erleichtern
|
|
|
07/17/2012, 16:09
|
#4
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by omer36
PHP Code:
For $i = 0 To 9
If $stu = $i Then $sturl = "0"&$i
If $minu = $i Then $mrl = "0"&$i
Next
|
wenn du an einen bekannten wert etwas anhängen willst, musst du nicht per bruteforce den wert ermitteln, da er ja bekannt ist...
Code:
If $stu < 10 Then $stu = '0'&$stu
If $minu <10 Then $mrl = '0'&$minu
spart in diesem falle 16 sinnlose abfragen. je nach datenmenge, würde der aufwand durch unnötige abfragen mit deiner methode, exponentiell wachsen.
|
|
|
 |
Similar Threads
|
progressbar
07/22/2010 - AutoIt - 10 Replies
hab mal wieder ne kleine frage, undzwar will ich, wenn ich ein button drücke die progressbar sich jedesmal um 20erhöht, aber bekomm das iwie nicht hin ...
in internet hab ich dazu nicht wirklich was gefunden....
mein bsp. code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
|
Progressbar
06/18/2010 - AutoIt - 2 Replies
$get1 = InetGet("...",$zgh & "\...")
$inf1 = InetGetInfo($get1,0)
Do
GUICtrlSetData($Progress1,$inf1)
Until InetGetInfo($get1,2) = True
Also, die Progressbar bleibt leer und die GUI ist scheintot, aber es lädt die Datei...
1. Progressbar soll konstant zum Download sein.
2. GUI soll aktiv bleiben.
|
VB-Webbrowser mit ProgressBar
05/09/2010 - .NET Languages - 2 Replies
Hey Leute
Ich bekomme es einfach nicht hin, das beim laden einer seite in meinem webbrowser der progressbar den ladefortschritt der seite zeigt die ich aufrufen möchte.
kann mir jemand konkret erklären wie das klappt was oben steht?
Danke
|
How to Make Progressbar
10/02/2009 - Coding Tutorials - 1 Replies
Visual Basics 6.0 - Progressbar Helloworld
YouTube - Visual Basics 6.0 - Progressbar Helloworld
How to Make a advanced progressbar in visual basic 2008
YouTube - How to Make a advanced progressbar in visual basic 2008
|
[PROGRESSBAR/MP3]HiLFE
08/25/2009 - AutoIt - 14 Replies
1.Also ich habe mit dem KODA form designer eine progress bar erstellt und jetzt weiss ich nicht wie ich sie zum laufen bringe des sollte dann gehen z.B. wenn button oder so gedrückt wird wie mache ich das und kann man dann auch irgendwie überprüfen ob die Progressbar fertig geladen ist?
2.Also ich wollte fragen ob ich eine mp3 oder wenns seien muss eine wav datei wärend einem skript abspielen kann wenn ja wie???
Wer mir hilft bekommt thanks ;)
MFG
|
All times are GMT +1. The time now is 02:16.
|
|