Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Zähler in Schleife

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 29.07.2011, 18:09    Titel: Zähler in Schleife Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 956
Wohnort: Austria

BeitragVerfasst am: 29.07.2011, 18:47    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 30.07.2011, 00:08    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 30.07.2011, 00:51    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Sannaj



Anmeldungsdatum: 19.12.2010
Beiträge: 35

BeitragVerfasst am: 01.08.2011, 00:49    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz