Aktuelle Zeit: 23.05.2013 15:31

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 15 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Kollisionsabfragen und CPU-Verbrauch
BeitragVerfasst: 16.07.2010 19:25 
Offline

Registriert: 10.05.2005 22:48
Hallo,

welche Prüfung ist CPU-schonender?

Code:
If MouseButton(1) And SpriteCollision(#Sprite_Fadenkreuz,MouseX(),MouseY(),#Sprite_Feind,Feinde()\x,Feinde()\y)

; ...

EndIf


oder

Code:
If MouseButton(1)
       
If SpriteCollision(#Sprite_Fadenkreuz,MouseX(),MouseY(),#Sprite_Feind,Feinde()\x,Feinde()\y)

; ...

EndIf
     
EndIf


Was meint ihr? Ich tippe mal auf die 2. Variante.

_________________
PB 5.10 + Win 8


Zuletzt geändert von Delle am 22.07.2010 01:32, insgesamt 2-mal geändert.

Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Kollisionsabfragen und CPU-Verbrauch
BeitragVerfasst: 16.07.2010 19:32 
Offline
Kommando SG1
Benutzeravatar

Registriert: 01.11.2005 13:34
Wohnort: Glienicke
schau dir mal das hier an:
Code:
Null = 0
If Null And MessageRequester("", "Ich komme nicht dran")

EndIf


Wenn in einem AND bereits der erste Ausdrück Falsch ergibt, wird die Abbfrage sofort beendet.

Somit kannst du auch bei dir die 1. Variante nehmen, welche dann sogar schneller ist, weil kein 2. IF block erzeugt werden muss.

_________________
Bild
 
BildBildBild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Kollisionsabfragen und CPU-Verbrauch
BeitragVerfasst: 16.07.2010 22:24 
Offline

Registriert: 10.05.2005 22:48
Danke für die Info!

Also am Besten man fragt zuerst das ab, was vermutlich eh nicht zutrifft?

Also eher so

If MouseButton(1) And SpriteCollision(#Sprite_Fadenkreuz,MouseX(),MouseY(),#Sprite_Feind,Feinde()\x,Feinde()\y)

als

If SpriteCollision(#Sprite_Fadenkreuz,MouseX(),MouseY(),#Sprite_Feind,Feinde()\x,Feinde()\y) And MouseButton(1)

_________________
PB 5.10 + Win 8


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Kollisionsabfragen und CPU-Verbrauch
BeitragVerfasst: 16.07.2010 22:47 
Offline
StudiMod oder sowas in der Art
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Homburg (Saar)
Genau.

_________________
Bild

NEU! Elektronik, Bastelei, Verrücktes, Interessantes, Schlaues, alles in Text, Bild und Ton? Klick hier! NEU!
Linux Mint 14 x64, PureBasic 5.11 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10)

Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Kollisionsabfragen und CPU-Verbrauch
BeitragVerfasst: 16.07.2010 22:58 
Offline
Kommando SG1
Benutzeravatar

Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Umgekehrtes gilt im übrigen bei OR

Dort am Anfang immer das hinstellen was in den meisten fällen Wahr ergibt, weil bei OR beim ersten Wahr auch abgebrochen wird.

_________________
Bild
 
BildBildBild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Kollisionsabfragen und CPU-Verbrauch
BeitragVerfasst: 17.07.2010 21:21 
Offline
Benutzeravatar

Registriert: 02.06.2008 21:29
Wohnort: Flemlingen bei Edenkoben (RP)
Hier verweise ich noch auf einen älteren Beitrag von mir: AND, OR, XOR

_________________
PB 4.61 | Windows Vista - 32Bit
Homepage

"Wahrlich es ist nicht das Wissen, sondern das Lernen, nicht das Besitzen sondern das Erwerben, nicht das Dasein, sondern das Hinkommen, was den grössten Genuss gewährt." - Carl Friedrich Gauß


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Kollisionsabfragen und CPU-Verbrauch
BeitragVerfasst: 19.07.2010 20:23 
Offline

Registriert: 10.05.2005 22:48
So und noch eine kleiner Optimierungsfrage...

Im Spiel wird ja an einer bestimmten Stelle immer überprüft ob eine Kollision (Abschuss) stattgefunden hat.

Das hab ich bisher immer so benutzt:

Code:
ForEach Feinde()

If MouseButton(1) And SpritePixelCollision()
; Feind löschen, Punkte erhöhen
EndIf

Next


Das läuft natürlich alle sichtbaren Feinde durch...

Wäre es nicht sinnvoller erstmal zu checken ob überhaupt die Maus gedrückt wurde? Und dann erst welcher Feind "tot" ist?

Code:
If MouseButton(1)

ForEach Feinde()
     
If SpritePixelCollision()
; Feind löschen, Punkte erhöhen
EndIf
         
Next

EndIf

_________________
PB 5.10 + Win 8


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Kollisionsabfragen und CPU-Verbrauch
BeitragVerfasst: 20.07.2010 13:42 
Offline
StudiMod oder sowas in der Art
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Homburg (Saar)
Ja, das ist sinnvoller.

Fehlt dir wirklich noch so das Gespür dafür, dass du selbst diese hier bestätigt brauchst? :wink:

Versuche deiner Intuition da mehr zu vertrauen. :wink:

_________________
Bild

NEU! Elektronik, Bastelei, Verrücktes, Interessantes, Schlaues, alles in Text, Bild und Ton? Klick hier! NEU!
Linux Mint 14 x64, PureBasic 5.11 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10)

Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Kollisionsabfragen und CPU-Verbrauch
BeitragVerfasst: 20.07.2010 14:50 
Offline
Benutzeravatar

Registriert: 14.08.2007 15:41
Wohnort: Lelbach
Ich lese in der Überschrift jedesmal versehentlich: "Koalitionsfragen und CDU-Verbrauch" :mrgreen:

_________________
- alles was ich hier im Forum sage/schreibe ist lediglich meine Meinung und keine Tatsachenbehauptung
- unkommentierter Quellcode = unqualifizierter Müll


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Koalitionsfragen und CDU-Verbrauch
BeitragVerfasst: 20.07.2010 15:35 
Offline
jaAdmin
Benutzeravatar

Registriert: 13.09.2004 17:48
ich auch :)

_________________
‮pb 4.x & 3.94 (windoof) /om84 (2)
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 15 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: Google Adsense [Bot] und 2 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye