Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 02:15

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[GUI]ProgressBar Problem

Discussion on [GUI]ProgressBar Problem within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Mar 2010
Posts: 91
Received Thanks: 3
Question [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
piper332 is offline  
Old 07/17/2012, 15:30   #2
 
omer36's Avatar
 
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 2Then 
(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 
omer36 is offline  
Thanks
1 User
Old 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
piper332 is offline  
Old 07/17/2012, 16:09   #4
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by omer36 View Post
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.
lolkop is offline  
Thanks
1 User
Reply


Similar Threads 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.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.