prozedur wird zu oft abgefragt

Anfängerfragen zum Programmieren mit PureBasic.
TheNewOne
Beiträge: 60
Registriert: 06.04.2011 14:33

prozedur wird zu oft abgefragt

Beitrag von TheNewOne »

Hallo zusammen,
ich habe wieder mal ein kleines Problem.

Code: Alles auswählen

If SpritePixelCollision(#cursor, mx, my, #turm, 800, 70)
    If MouseButton(#PB_MouseButton_Left)
      payment()
    EndIf
  EndIf
Hier wird sobald mit der Maus auf ein Symbol geklickt wird, von den vorhandenen "resourcen" 250 abgezogen werden.

Code: Alles auswählen

Procedure payment()
  
  sprite = #turm
  startres - 250
  
EndProcedure


Klicke ich aber auf das Symbol zieht es andauernd 250 ab. Ich hoffe mir kann jemand helfen, dass pro klick nur noch 250 und nicht mehr abgezogen wird.
Win7, 64bit, PB 4.60
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: prozedur wird zu oft abgefragt

Beitrag von ts-soft »

Du solltest nach dem Abziehen erst mal warten, bis der Button losgelassen wurde, bzw. der Mauszeiger den Sprite verlassen hat.

PS: Ein ausführbarer Code macht das Testen einfacher und gibt auch bessere Lösungen für Dich. Ohne vernünftigen Code
gibt es auch nur theoretische Antworten, wenn überhaupt!

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
TheNewOne
Beiträge: 60
Registriert: 06.04.2011 14:33

Re: prozedur wird zu oft abgefragt

Beitrag von TheNewOne »

ts-soft hat geschrieben:Du solltest nach dem Abziehen erst mal warten, bis der Button losgelassen wurde,
wie kann ich den abfragen ob der button schon losgelassen wurde(ist die linke Maustaste im Vollbildmodus)?
Win7, 64bit, PB 4.60
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: prozedur wird zu oft abgefragt

Beitrag von ts-soft »

Lt. Hilfe ergibt MouseButton(#PB_MouseButton_Left) 0 wenn der Button losgelassen wurde.
Da ich immer noch keinen ausführbaren Code sehe, muss Dir diese Auskunft genügen.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: prozedur wird zu oft abgefragt

Beitrag von DarkDragon »

TheNewOne hat geschrieben:
ts-soft hat geschrieben:Du solltest nach dem Abziehen erst mal warten, bis der Button losgelassen wurde,
wie kann ich den abfragen ob der button schon losgelassen wurde(ist die linke Maustaste im Vollbildmodus)?
Du musst dir den vorherigen Rückgabewert von MouseButton merken. Dann prüfst du, ob sich der nächste Wert vom vorherigen unterscheidet und prüfst dann, ob dieser nächste Wert ungleich 0 oder gleich 0 ist.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
TheNewOne
Beiträge: 60
Registriert: 06.04.2011 14:33

Re: prozedur wird zu oft abgefragt

Beitrag von TheNewOne »

Danke euch beiden, hab mein Problem gelöst :allright: .
Win7, 64bit, PB 4.60
Antworten