Servus!
Hoffe jemand kann mir auf die Sprünge helfen, klebe gerade ziemlich fest. Gegeben ist ein Applet das einen zweidimensionalen Luftraum definiert, und durch den Striche, die Flugzeuge simulieren, fliegen. Dies ist soweit gelungen, die Richtung (Heading) wird dabei zufällig generiert.
Im Moment ist es allerdings so, dass das ganze einmal durchläuft, und dann stoppt. Die Idee wäre aber, dass nach einem Durchgang, das ganze neu startet, also neue "Flugzeuge" mit neuen Headings generiert werden, solange bis es zu einem Zusammenstoss kommt.
Ich wollte das mit einer while Schleife lösen, in der ich mich auf die X und Y Positionen der "Flugzeuge" beziehe, sprich wenn diese Werte identisch sind, soll das ganze stoppen und einen String ausgeben, ansonsten soll das ganze Applet immer neu gestartet werden. Entweder geht das so nicht, oder ich platzier die Schleife am falschen Ort.
Kann mir jemand weiterhelfen?
Herzlichen Dank jetzt schon!
Aufgebaut ist das ganze folgendermassen:
Hoffe jemand kann mir auf die Sprünge helfen, klebe gerade ziemlich fest. Gegeben ist ein Applet das einen zweidimensionalen Luftraum definiert, und durch den Striche, die Flugzeuge simulieren, fliegen. Dies ist soweit gelungen, die Richtung (Heading) wird dabei zufällig generiert.
Im Moment ist es allerdings so, dass das ganze einmal durchläuft, und dann stoppt. Die Idee wäre aber, dass nach einem Durchgang, das ganze neu startet, also neue "Flugzeuge" mit neuen Headings generiert werden, solange bis es zu einem Zusammenstoss kommt.
Ich wollte das mit einer while Schleife lösen, in der ich mich auf die X und Y Positionen der "Flugzeuge" beziehe, sprich wenn diese Werte identisch sind, soll das ganze stoppen und einen String ausgeben, ansonsten soll das ganze Applet immer neu gestartet werden. Entweder geht das so nicht, oder ich platzier die Schleife am falschen Ort.
Kann mir jemand weiterhelfen?
Herzlichen Dank jetzt schon!
Aufgebaut ist das ganze folgendermassen:
Java:
mport java.applet.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
public class test2
extends Applet
implements ActionListener
{
// globale Variablen Aircraft 1
....
// globale Variablen Aircraft 2
...
// globale Variablen Aircraft 3
....
public void init() {
setSize(400, 400);
heading = (double) (Math.random() * 360);
System.out.println(heading);
if (heading > 0 && heading < 45) {
double einheitskreis = heading; // nur im ersten Quadranten
//tangens des Einheitskreises berechnen
double tangens = Math.tan(Math.toRadians(einheitskreis));
System.out.println(tangens);
// x-Koordinate Einflugpunkt auf dem Rechteck
einflugx = mittelpunktx - tangens * radiuskreis;
// y-Koordinate Einflugpunkt auf dem Rechteck
einflugy = mittelpunkty + radiuskreis;
} else if (heading >= 45 && heading < 90) {
double einheitskreis = 90 - heading;
//tangens des Einheitskreises berechnen
double tangens = Math.tan(Math.toRadians(einheitskreis));
System.out.println(tangens);
einflugx = mittelpunktx - radiuskreis;
einflugy = mittelpunkty + tangens * radiuskreis;
}
//usw bis 360 Grad
....
//Aircraft 2 nochmals dasselbe
//Aircraft 3 ebenfalls
zeichnungswinkel = Math.toRadians(450-heading);
zeichnungswinkel2 = Math.toRadians(450-heading2);
zeichnungswinkel3 = Math.toRadians(450-heading3);
int delay = 100; // milliseconds
new Timer(delay, this).start();
}
public void actionPerformed(ActionEvent ereignis)
{
if (counter == 0) {
ursprungx = einflugx;
ursprungy = einflugy;
ursprungx2 = einflugx2;
ursprungy2 = einflugy2;
ursprungx3 = einflugx3;
ursprungy3 = einflugy3;
}
else {
ursprungx = zielx;
ursprungy = ziely;
ursprungx2 = zielx2;
ursprungy2 = ziely2;
ursprungx3 = zielx3;
ursprungy3 = ziely3;
}
zielx = ursprungx + länge * Math.cos(zeichnungswinkel);
ziely = ursprungy - länge * Math.sin(zeichnungswinkel);
zielx2 = ursprungx2 + länge * Math.cos(zeichnungswinkel2);
ziely2 = ursprungy2 - länge * Math.sin(zeichnungswinkel2);
zielx3 = ursprungx3 + länge * Math.cos(zeichnungswinkel3);
ziely3 = ursprungy3 - länge * Math.sin(zeichnungswinkel3);
counter++;
this.repaint();
}
public void paint(Graphics g) {
for (int i = 1; i < 361; i = i + 10){
irad = Math.toRadians(i);
xaussen = 200 + (ra * Math.cos(irad));
yaussen = 200 - (ra * Math.sin(irad));
xinnen = 200 + (ri * Math.cos(irad));
yinnen = 200 - (ri * Math.sin(irad));
g.drawLine((int)xaussen, (int)yaussen, (int)xinnen, (int)yinnen);
}
g.setColor(Color.black);
g.drawLine((int)ursprungx, (int)ursprungy, (int)zielx, (int)ziely);
g.drawString(""+(int)heading, (int)ursprungx+10, (int)ursprungy);
g.setColor(Color.blue);
g.drawLine((int)ursprungx2, (int)ursprungy2, (int)zielx2, (int)ziely2);
g.drawString(""+(int)heading2, (int)ursprungx2+10, (int)ursprungy2);
g.setColor(Color.orange);
g.drawLine((int)ursprungx3, (int)ursprungy3, (int)zielx3, (int)ziely3);
g.drawString(""+(int)heading3, (int)ursprungx3+10, (int)ursprungy3);
}
}