 |
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, 18: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: 956 Wohnort: Austria
|
Verfasst am: 29.07.2011, 18: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: 30.07.2011, 00: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: 30.07.2011, 00: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: 01.08.2011, 00: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.
|
|