Innerhalb des Kreises oder außerhalb?
Übersicht

![]() |
DottakopfBetreff: Innerhalb des Kreises oder außerhalb? |
![]() Antworten mit Zitat ![]() |
---|---|---|
HI Blitzer !
Wie es der Titel schon verrät, suche ich eine Lösung mit der ich prüfen kann, ob ein Spieler in einen Kreis oder daneben klickt. Ich hab jetzt mal den Mittelpunkt jedes Kreise berechnet, so und nun müßte ich eigentlich nur noch prüfen, ob sich die maus bei mausklick innerhalb des Kreisradiuses befindet. Aber wie mache ich die ? Ich bin zu blöde ![]() Des Weiterem befürchte ich, dass diese Abfrage nie wahr werden könnte, weil eigentlich nur ein Kreis getroffen(geklickt) werden kann und somit nicht im radius eines anderen liegt. Zusammen gefasst: Ich hätte gerne ein Hilfestellung bei der Distanzprüfung vom Mittelpunkt, bis zu Kreislinie. Hier ist der aktuelle Standpunkt: Code: [AUSKLAPPEN] Graphics 800,600,16,2 SetBuffer BackBuffer() ;globals Global create_counter Global mx,my ;types Type ring Field r_x Field r_y Field r_radius Field r_mode Field r_mitte_x Field r_mitte_y Field r_area End Type ;main--------------------------------- Repeat Cls mouse_update() ring_create() ring_update() Flip Until KeyHit(1) ;-------------------------------------- ;funktionen Function mouse_update() mx = MouseX() my = MouseY() End Function Function ring_create() create_counter = create_counter +1 If create_counter = 15 Then create_counter = 0 info.ring = New ring info\r_x = Rnd(0,700) info\r_y = Rnd(0,500) info\r_radius = 4 info\r_mode = 0 info\r_mitte_x = info\r_x + 2 info\r_mitte_y = info\r_y - 2 End If End Function Function ring_update() For info.ring = Each ring ;neuen radius festlegen If info\r_mode = 0 Then info\r_radius = info\r_radius +1 ElseIf info\r_mode = 1 Then info\r_radius = info\r_radius -1 End If ;kreis erstellen Oval info\r_x,info\r_y,info\r_radius,info\r_radius,0 ;modus wechseln If info\r_radius > 100 Then info\r_mode = 1 ;mittelpunkts berechnung info\r_mitte_x = info\r_x + (info\r_radius / 2) info\r_mitte_y = info\r_y + (info\r_radius / 2) Plot info\r_mitte_x,info\r_mitte_y ; zeigt Mittelpunkt If info\r_radius < 2 Then Delete info.ring Next End Function mfg Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
![]() |
ChaosCoder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] If MouseHit(1)
For info.ring = Each ring if((mx-ring\r_mitte_x)^2+(my-ring\r_mitte_y)^2)<ring\radius ;Der User hat in den Kreis geklickt! endif next endif Viel Spaß, klappt auch wenn sich 2 Kreise überlagern, dann wird das was du machen willst mit den beiden kreisen oder mehreren kreisen gemacht. PS: Satz des Pythagoras ist der Begriff dieses Wunders^^ MfG Chaos |
||
Projekte: Geolaria | aNemy
Webseite: chaosspace.de |
![]() |
darth |
![]() Antworten mit Zitat ![]() |
---|---|---|
soviel ich sehe fehlt da noch n sqr :S
abstand zu einem punkt: sqr((Xmitte-Xpos)^2+(Ymitte-Ypos)^2)) und dieser muss kleiner sein als der radius. |
||
Diese Signatur ist leer. |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sorry, dasss ich jetzt erst zurück schreibe .... musste kurz mal weg.
Ok danke für deine Hilfe ! Jedoch funtz es noch nicht so wie es mir vorgestellt hatte. Ich kann zwar den kreis dann deleten, doch nur wenn ich ihn genau in der mitte erwische. Vorab ich benutze B3D (demo) : Ich weis jetzt nicht ob das so gewollt wahr aber bb nimmt diese zeile nicht an. Code: [AUSKLAPPEN] if((mx-ring\r_mitte_x)^2+(my-ring\r_mitte_y)^2)<ring\radius So hab ich es dan zum laufen gebracht : Code: [AUSKLAPPEN] If((mx-info\r_mitte_x)^2+(my-info\r_mitte_y)^2)<info\r_radius Hab ich das falsch umgesetzt ? mfg Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
den letzten post hab ich nicht gesehen , also habs ich so einbaut:
Code: [AUSKLAPPEN] If((mx-info\r_mitte_x)^2+(my-info\r_mitte_y)^2) <info\r_radius Or Sqr((info\r_mitte_x - info\r_x)^2+(info\r_mitte_y-info\r_y)^2)<info\r_radius ich glaub des ist falsch... (es werden alle gelöscht so ähnlich wie im ersten post angedeutet ) hab mit der sqr befehl noch nicht zu tun gehabt mal gleich OH bin jetzt dan au weg für heut.. Essn + beach Party ^^ mfg Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
![]() |
ChaosCoder |
![]() Antworten mit Zitat ![]() |
---|---|---|
lol, im so sorry ![]() Code: [AUSKLAPPEN] If MouseHit(1)
For info.ring = Each ring if Sqr((mx-info\r_mitte_x)^2+(my-info\r_mitte_y)^2)<info\r_radius ;Der User hat in den Kreis geklickt! endif next endif So sollte es funzen, man merkt echt dass ich in letzter zeit zuviel mit php zu tun hatte |
||
Projekte: Geolaria | aNemy
Webseite: chaosspace.de |
![]() |
DottakopfBetreff: Danke ! |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jup danke für deine Hilfe, funtzt nach einer kleinen korrektur von mir perfekt.
die Varriable radius ist falsch bennant sie müsste eingentlich Durchmesser heißen. So die kleine Korrekture ( r : 2) Code: [AUSKLAPPEN] If Sqr((mx-info\r_mitte_x)^2+(my-info\r_mitte_y)^2)< (info\r_radius /2) Danke für eure Hilfe ! mfg Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
![]() |
darth |
![]() Antworten mit Zitat ![]() |
---|---|---|
tsss ![]() |
||
Diese Signatur ist leer. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group