Befehl Zwischen?
Übersicht

TombiBetreff: Befehl Zwischen? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ql:RectsOverlap
Schell genug? ![]() |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Tombi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sry, verstehe das nicht ganz. Ich möchte das mit der Maus machen, nicht mit Rechtecken ^^
Wie müsste der Code aussehen? |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wow Danke ![]() Edit: Was ist schneller von beidem? |
||
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Die Function gefällt mir ![]() Was ist jetzt von allem das schnellste? Und wie greift man auf das True/False zu? If mouseInRect = True Then oder wie? |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@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. ![]() |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Tombi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielen Dank für deine Aussage.
Global Variable = Wert ist mir schon bekannt ^^ LG Tombi |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group