  | 
					
						Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!   
						
						
					 | 
				 
			 
			 
	
		| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen   | 
	 
	
	
		| Autor | 
		Nachricht | 
	 
	
		ALWIM
 
  
  Anmeldungsdatum: 08.08.2006 Beiträge: 1048 Wohnort: Niederbayern
  | 
		
			
				 Verfasst am: 29.07.2011, 17:09    Titel: Zähler in Schleife | 
				     | 
			 
			
				
  | 
			 
			
				Folgendes Problem: Ich habe eine Schleife. In dieser Schleife soll nach einem Mausklick bestimmte zuvor per Zufall ermittelte Zahlen addiert werden. Bleibe ich auf der linken Maustaste drauf, zählt der ins unendliche weiter und nicht immer nur um eins. Immer wenn ich auf die linke Maustaste draufklicke, sollen 2 oder 6 Zufallszahlen addiert werden und zu der vorhandenen vorher ermittelten Zahl hinzugerechnet werden.
 
 
Nochmal:
 
 
1. Mausklick = 2 oder 6 Zahlen werden addiert; ergibt eine Gesamtzahl
 
2. Mausklick = 2 oder 6 Zahlen werden addiert & zu der Gesamtzahl hinzu gerechnet
 
 
Ich habe schon mal so ein funktionierendes Programm geschrieben, weis aber nicht mehr genau wie. Quellcode ging wegen einem Virus verloren.
 
 
Vielleicht kann mir jemand weiterhelfen, ich komme im Moment nicht drauf. _________________ SHELL SHUTDOWN -s -t 05 | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		St_W
 
  
  Anmeldungsdatum: 22.07.2007 Beiträge: 958 Wohnort: Austria
  | 
		
			
				 Verfasst am: 29.07.2011, 17:47    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				bzgl. Maustaste: soetwas in der art?
 
 
 	  | Code: | 	 		  dim x as Integer
 
dim y as Integer
 
dim wheel as Integer
 
dim buttons as Integer
 
dim clip as Integer
 
 
dim taste as String = ""
 
 
while taste <> chr(27)
 
   taste = inkey
 
   if taste = "c" then cls
 
   getmouse(x, y, wheel, buttons, clip)
 
 
   if buttons <> 0 then
 
      print using "Buttons ##, Wheel ###";buttons;wheel
 
   EndIf
 
 
   while buttons <> 0
 
      sleep 10
 
      getmouse(x, y, wheel, buttons, clip)
 
   wend
 
 
Wend | 	  
 
 
Die genaue Funktionsweise deines Programms is mir aus deiner Beschreibung nicht so ganz klar geworden ... _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
 
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		ALWIM
 
  
  Anmeldungsdatum: 08.08.2006 Beiträge: 1048 Wohnort: Niederbayern
  | 
		
			
				 Verfasst am: 29.07.2011, 23:08    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | St_W hat Folgendes geschrieben: | 	 		  bzgl. Maustaste: soetwas in der art?
 
 
 	  | Code: | 	 		  dim x as Integer
 
dim y as Integer
 
dim wheel as Integer
 
dim buttons as Integer
 
dim clip as Integer
 
 
dim taste as String = ""
 
 
while taste <> chr(27)
 
   taste = inkey
 
   if taste = "c" then cls
 
   getmouse(x, y, wheel, buttons, clip)
 
 
   if buttons <> 0 then
 
      print using "Buttons ##, Wheel ###";buttons;wheel
 
   EndIf
 
 
   while buttons <> 0
 
      sleep 10
 
      getmouse(x, y, wheel, buttons, clip)
 
   wend
 
 
Wend | 	  
 
 
Die genaue Funktionsweise deines Programms is mir aus deiner Beschreibung nicht so ganz klar geworden ... | 	  
 
 
entspricht leider nicht ganz dem was ich haben will.
 
 
Ich habe eine Schleife mit Do Loop. In dieser Schleife soll per Mausklick (und nur bei dem einen Mausklicjk) 2 oder 6 Zahlen addiert werden. Leider addiert mein Programm die Zahlen bei jedem Schleifendurchlauf und nicht 1 einziges Mal durch einen Mausklick. Beim zweiten Mausklick sollen nochmals 2 oder 6 Zahlen addiert werden und zu dem Ergebnis der ersten Rechnung hinzu addiert werden. Mein Programm zählt wie gesagt, ins unendliche. _________________ SHELL SHUTDOWN -s -t 05 | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		Eternal_pain
 
  
  Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
  | 
		
			
				 Verfasst am: 29.07.2011, 23:51    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Ich habe ähnliches Problem recht einfach gelöst...
 
 
 	  | Code: | 	 		  Dim as Integer MouseX,MouseY,MouseB
 
Dim as Integer MouseB_Old
 
 
 
Do
 
    GetMouse MouseX,MouseY,,MouseB
 
    
 
    If MouseB=1 and MouseB_Old=0 Then
 
        MouseB_Old=1
 
        'Programm
 
    End If
 
    
 
    If MouseB_Old=1 and MouseB=0 Then MouseB_Old=0
 
    
 
    sleep 1
 
    If Multikey (&h01) Then Exit Do 'Schleife verlassen
 
Loop | 	  
 
 
Edit:
 
 
Hab das ganze noch einfacher mit einer Funktion:
 
 	  | Code: | 	 		  Function MyMouse_Click (Byval vonX as Integer=-1, Byval vonY as Integer=-1, _
 
                        Byval bisX as Integer=-1, Byval bisY as Integer=-1) as Integer
 
 
    Static Button_O  as Integer =-1
 
    
 
    Dim Bereich_X    as Integer
 
    Dim Bereich_Y    as Integer
 
    Dim Bereich_vonX as Integer
 
    Dim Bereich_vonY as Integer
 
    Dim Bereich_bisX as Integer
 
    Dim Bereich_bisY as Integer
 
    
 
    Dim MouseX       as Integer
 
    Dim MouseY       as Integer
 
    Dim MouseB       as Integer
 
    
 
    ScreenInfo Bereich_X,Bereich_Y
 
    
 
    Bereich_vonX=IIF(vonX>-1,IIF(vonX<=bisX,vonX,bisX),0)
 
    Bereich_vonY=IIF(vonY>-1,IIF(vonY<=bisY,vonY,bisY),0)
 
    Bereich_bisX=IIF(bisX>-1,IIF(bisX>=vonX,bisX,vonX),Bereich_X)
 
    Bereich_bisY=IIF(bisY>-1,IIF(bisY>=vonY,bisY,vonY),Bereich_Y)
 
    
 
    GetMouse MouseX,MouseY,,MouseB
 
    
 
    If Button_O<>MouseB and _
 
       MouseX>=Bereich_vonX and MouseY>=Bereich_vonY and _
 
       MouseX<=Bereich_bisX and MouseY<=Bereich_bisY Then
 
            Button_O=MouseB
 
            Return MouseB
 
    End If
 
    
 
    Return 0
 
End Function | 	 
  _________________
   | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		Sannaj
 
 
  Anmeldungsdatum: 19.12.2010 Beiträge: 35
 
  | 
		
			
				 Verfasst am: 31.07.2011, 23:49    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Die Lösung ist ganz einfach. Du erstellst eine Lock Flag (byte oder integer). Diese ist zuerst freigegeben, also auf 0. Wird die Taste gedrückt passiert folgendes:
 
Wenn die Lockflag 0 ist, wird die gewünschte Aktion (das mit den Zahlenaddieren) durgeführt und die Lockflag gesetzt (z.B. auf -1).
 
Ist sie bereits gesetzt (<>0) geschieht überhaupt nichts.
 
Wenn die Taste nicht gedrückt wird, wird die Lockflag gelöscht (auf 0 gesetzt). | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
  | 
   
 
     |