Befehl Zwischen?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Tombi

Betreff: Befehl Zwischen?

BeitragFr, Aug 17, 2007 10:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibt es einen Befehl mit dem ich abfragen kann ob etwas zwischen einem Bereich liegt?

Das könnte so aussehen:

X=MouseX()
Y=MouseY()

If X zwischen 10 und 20 And Y zwischen 10 und 20 Then
Text 100,100, "X und Y befinden Sich im Bereich 10-20"
EndIf


Würde das so schnell wie möglich klären wollen wie das möglich wäre Sad

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Aug 17, 2007 10:39
Antworten mit Zitat
Benutzer-Profile anzeigen
ql:RectsOverlap

Schell genug? Very Happy
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Tombi

BeitragFr, Aug 17, 2007 10:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Sry, verstehe das nicht ganz. Ich möchte das mit der Maus machen, nicht mit Rechtecken ^^
Wie müsste der Code aussehen?

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Aug 17, 2007 10:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Maus als Breite 0 machen und alles ist gut...

Code: [AUSKLAPPEN]
Graphics 400,400,0,2
SetBuffer BackBuffer()



While Not KeyHit(1)
   x=MouseX()
   y=MouseY()
   If RectsOverlap(x,y,0,0,10,10,100,100) Text 10,120,"tadaaaa"
   Rect 10,10,100,100,0
   Flip
   Cls
Wend
End

edit1: Alternativ geht's natürlich auch mit einer If-Verschachtelung:

Code: [AUSKLAPPEN]
Graphics 400,400,0,2
SetBuffer BackBuffer()



While Not KeyHit(1)
 x=MouseX()
 y=MouseY()

 If x>10
   If y>10
   If x<100
    If y<100
     Text 10,120,"tadaaaa"
    End If
   End If
  End If
 End If

 Rect 10,10,90,90,0
 Flip
 Cls
Wend
End
 

Tombi

BeitragFr, Aug 17, 2007 10:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Wow Danke Shocked
Edit: Was ist schneller von beidem?

SpionAtom

BeitragFr, Aug 17, 2007 11:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich benutze für sowas immer eine Function:
Code: [AUSKLAPPEN]
Function mouseInRect(x, y, w, h)

   If mouse_x <= x Then Return False
   If mouse_y <= y Then Return False
   If mouse_x >= x + w Then Return False
   If mouse_y >= y + h Then Return False
   Return True   

End Function
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
 

Tombi

BeitragFr, Aug 17, 2007 11:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Function gefällt mir Very Happy
Was ist jetzt von allem das schnellste?
Und wie greift man auf das True/False zu?

If mouseInRect = True Then

oder wie?

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Aug 17, 2007 11:27
Antworten mit Zitat
Benutzer-Profile anzeigen
@SpinAtom, Tombi wird wohl noch recht Unerfahren in Bezug auf Programmieren sein, wenn er solche Fragen stellt. Daher wäre es angebracht zu erwähnen, dass bei deiner Funktion die Mausvariablen ql:Global deklariert sein müssen. Ansonsten ist es eine schöne Sache und in solcher Ausführung auch auf Speed geachtet.

@Tombi, welches der beiden schneller ist, weiß ich so nicht. Nehmen wir einfach an, das zweite Beispiel wäre viermal schneller als das erste Beispiel, so währe dieser enorme Unterschied letztendlich doch irrelevant. Da die Speedbremse die Grafikdarstellung ist, kommt ein so schneller Befehl überhaupt nicht zu tragen (weniger als ~ 0.1%). Erst wenn du 1000 Abfragen pro Schleifendurchlauf machst, kann man sich Gedanken drum machen. Aber sollten 1000 Abfragen gemacht werden, so wird auch sicherlich die Grafik so oft eingezeichnet etc...

Also Speedoptimierung sollte erstmal auf anderen Ebenen stattfinden. Das beginnt schonmal bei Flip. Schaue dir mal die Prozessorauslastung bei Flip (also Flip 1) und bei festgesetzten Flip 0 im Zusammenspiel mit ql:CreateTimer mal an. Shocked Bei einem normalen Prozessor hast du bei Flip ~90% Auslastung bzw. 45% bei HT-Prozessoren. Bei Flip 0 mit Timer hast du trotz (von mir aus doppelter) Frames pro Sekunde eine Prozessorauslastung von (je nach Programm) ~2 %...
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Tombi

BeitragFr, Aug 17, 2007 11:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank für deine Aussage.
Global Variable = Wert ist mir schon bekannt ^^

LG Tombi

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group