Satz des Pythagoras und Applecatch

Status
Nicht offen für weitere Antworten.

777

Bekanntes Mitglied
Hallo Leute,
Ich habe ein Spiel geschrieben, was Applecatch heißen soll. Dazu habe ich bisher schon einige Fragen gestellt und ich bin jetzt fast fertig.
Es hakt nurnoch an einer Stelle.
Am besten erkläre ich erst einmal, wie genau ich das überhaupt programmiert habe.
Und zwar entstehen mit Hilfe eines Threads immer per Zufall verschiedene Kugeln auf dem Bildschirm.
Diese lass ich mit der Funktion fillOval() zufälllig erscheinen.
Diese Funktion erwartet vier Integerwerte.

fillOval(posx,posy,breite,breite)

Die Variablen heißen bei mir:

fillOval(posx,posy,b,b);

Pro Klick auf die Form habe ich außerdem noch zwei weiter variablen, die bei jedem Klick ausgelesen werden.
Diese nennen sich mausx und mausy.
Eine weitere Variable bei mir wäre "Abstand", die den Abstand zwischen Mausklickstelle und Kreismittelpunkt darstellt.
Das mit dem Treffen oder nicht treffen habe ich jetzt einfach so gedacht:



pythagoras.JPG


Hierbei nutze ich das mit Pythagoras.
Die Formel für den Abstand wäre also dann:

a² = ((b/2)+posx-mausx)²+((b/2)+posy-mausy)²

Ich müsste nun also nurnoch aus dem hinteren Teil die Wurzel ziehen und ich hätte den Abstand zwischen Mausklickpunkt und der Kreismitte.
Der Rest ist ein Katzensprung:

Ich frage einfach ab ob der Abstand zwischen Mauszeiger und Kreismittelpunkt kleiner oder größer als "b/2"- also der Radius des Kreises- ist.
Ist das der Fall habe ich getroffen.
In der Praxis sah das bei mir dann hier so aus:




Code:
 abstand=Math.sqrt((Math.pow((posxd+r-mausx),2))+ (Math.pow((posyd+r-mausy),2)));
          
          if(abstand<=r)
          {
           ausgabe.setText("TREFFER!!!"); 
          }  
          else
          ausgabe.setText("");
           
         }



Der Compiler meckert auch nicht oder so etwas in der Art aber es gibt nie einen Treffer.
Hat einer von euch vielleicht eine Ahnung worin mein Fehler bestehen könnte???
Wäre sehr lieb von euch, denn ich habe schon seit drei Stunden keine Lösung meines Problems und bin jetzt recht denkensmüde xD
David

PS: :) :) :) :) :) :) :)
 
B

Beni

Gast
Weis gerade nichts, aber gib dir dochmal aus, welchen Wert "abstand" hat. Vielleicht wird die Methode nie aufgerufen, oder irgendwas mit abstand und r passt nicht.
 

777

Bekanntes Mitglied
Das ist es ja gerade!
Er gibt "Abstand" total scheisse aus. So als wäre das Zufall, was er ausgibt...
 

777

Bekanntes Mitglied
Es klappt jetzt obwohl ich nicht verstehe wiso!
In meiner Paintmethode stand zuerst:


Code:
public void paint(Graphics g)
      {
           
                       try
            {
            Apfelschiessen.sleep(1500);
            }
           
            catch(InterruptedException e)
            {
               
            }   
  
            f1=(int)(Math.random()*200);
            f2=(int)(Math.random()*200);
            f3=(int)(Math.random()*200);
            f4=(int)(Math.random()*200);
           
            posx=(int)(Math.random()*300+10);
            posy=(int)(Math.random()*300+10);
            b=(int)(Math.random()*100+10);

            g.setColor(new Color(f1,f2,f3,f4)); 
            g.fillOval(posx,posy,b,b);
     

           
      }


Ich habe dann den Tryteil einfach hinter den Restcode kopiert und jetzt geht alles!!!
Nur WARUM???
David
 

lin

Top Contributor
dann überprüf mal welche Werte a und b haben, also
(posxd+r-mausx) und (posyd+r-mausy)..

edit: 1. langsamer und 2. dann auch noch den falschen hint :cry: :wink:
 
B

Beni

Gast
Ein sleep in der paint-Methode? Das kann nicht funktionieren, lösch das! Du blockierst damit den ganzen EvendDispatcher, also auch die Methoden welche die MouseEvents verarbeiten...
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben