G
Gast
Gast
Hallo!
Ich möchte ein Programm schreiben bei dem sich in einem Java-Applet 2 Kugeln bewegen und sich voneinander abstoßen. Das Abstoßen beider Kugeln an den Wänden des Applets, habe ich schon realisiert. Mir fehlt nur noch die Kollison beider Kugeln. Bitte helft mir. Ich poste hier mal den Code den ich bis jetzt habe:
Ich möchte ein Programm schreiben bei dem sich in einem Java-Applet 2 Kugeln bewegen und sich voneinander abstoßen. Das Abstoßen beider Kugeln an den Wänden des Applets, habe ich schon realisiert. Mir fehlt nur noch die Kollison beider Kugeln. Bitte helft mir. Ich poste hier mal den Code den ich bis jetzt habe:
Code:
import java.applet.*; //Applet wird komplett importiert
import java.awt.*; //AWT wird komplett importiert
import javax.swing.*; //Swing wird komplett importiert
public class FachklasseZeichenebeneV5_2 extends JPanel{
private static final long serialVersionUID = 1L;
int Steigung1x = 4; //Steigung von x der 1. Kugel
int Steigung1y = 3; //Steigung von y der 1. Kugel
int Steigung2x = 5; //Steigung von x der 2. Kugel
int Steigung2y = 3; //Steigung von y der 2. Kugel
int laenge = 20; //Pausenlänge
int x1 = 10; //x-Koordinate der 1. Kugel
int y1 = 10; //y-Koordinate der 1. Kugel
int x2 = 80; //x-Koordinate der 2. Kugel
int y2 = 10; //y-Koordinate der 2. Kugel
int i1 = 1; //Laufvariabel für die Verlangsamung beim Wandabstoß der 1. Kugel
int i2 = 1; //Laufvariabel für die Verlangsamung beim Wandabstoß der 2. Kugel
int w = 1; //Laufvariabel für den Rollwiderstand
public void paint(Graphics g){
while (true){ //Endlos-Schleife
w++; //w bei jedem Durchgang um 1 erhöhen
System.out.println("");
richtungsWechsel(); //Aufruf der Methode richtungswechsel
zeichneKugel1(g); //Aufruf der Methode zeichneKugel
zeichneKugel2(g); //Aufruf der Methode zeichneKugel
schlafen(); //Aufruf der Methode schlafen
System.out.printf("x1: "+x1+" y1: "+y1); //Ausgabe von x1 und y1
}
}
public void richtungsWechsel(){
if(x1 > 150){ //Wenn x1 größer wie die Breite des Fensters ist
Steigung1x = Steigung1x*(-1); //dann wird das Vorzeichen der Steigung "umgedreht"
i1++; //i bei jedem Durchgang um 1 erhöhen
}
if(x2 > 150){ //Wenn x2 größer wie die Breite des Fensters ist
Steigung2x = Steigung2x*(-1); //dann wird das Vorzeichen der Steigung "umgedreht"
i2++; //i2 bei jedem Durchgang um 1 erhöhen
}
if(x1 < 0){ //Wenn x1 kleiner wie 0 auf der x-Achse ist
Steigung1x = Steigung1x*(-1); //dann wird das Vorzeichen der Steigung "umgedreht"
i1++; //i bei jedem Durchgang um 1 erhöhen
}
if(x2 < 0){ //Wenn x2 kleiner wie 0 auf der x-Achse ist
Steigung2x = Steigung2x*(-1); //dann wird das Vorzeichen der Steigung "umgedreht"
i2++; //i2 bei jedem Durchgang um 1 erhöhen
}
if(y1 > 150){ //Wenn y1 größer wie die Höhe des Fensters ist
Steigung1y = Steigung1y*(-1); //dann wird das Vorzeichen der Steigung "umgedreht"
i1++; //i bei jedem Durchgang um 1 erhöhen
}
if(y2 > 150){ //Wenn y2 größer wie die Höhe des Fensters ist
Steigung2y = Steigung2y*(-1); //dann wird das Vorzeichen der Steigung "umgedreht"
i2++; //i2 bei jedem Durchgang um 1 erhöhen
}
if(y1 < 0){ //Wenn y1 kleiner wie 0 auf der y-Achse ist
Steigung1y = Steigung1y*(-1); //dann wird das Vorzeichen der Steigung "umgedreht"
i1++; //i bei jedem Durchgang um 1 erhöhen
}
if(y2 < 0){ //Wenn y2 kleiner wie 0 auf der y-Achse ist
Steigung2y = Steigung2y*(-1); //dann wird das Vorzeichen der Steigung "umgedreht"
i2++; //i2 bei jedem Durchgang um 1 erhöhen
}
}
public void zeichneKugel1(Graphics g){
g.setColor(Color.WHITE); //Farbe auf Weis setzen
g.fillOval(x1, y1, 30, 30); //Es wird eine weise Kugel auf die alte Position gemalt
x1 = x1 + Steigung1x; //Die x1 und y1 Koordinaten werden mit der Steigung verrechnet und
y1 = y1 + Steigung1y; //bekommen dadurch deinen neuen Wert.
g.setColor (Color.BLACK); //Farbe auf Schwarz setzen
g.fillOval (x1, y1, 30, 30); //Schwarze Kugel auf die neue Position mit x1 und y1 malen
}
public void schlafen(){
try { //Exception Handling
Thread.sleep(laenge); //Die Funktion für die Länge von "laenge" einschlafen lassen
} catch (InterruptedException e) { //Exception Handling
e.printStackTrace(); //Exception Handling
}
}
public void zeichneKugel2(Graphics g){
g.setColor(Color.WHITE); //Farbe auf Weis setzen
g.fillOval(x2, y2, 30, 30); //Es wird eine weise Kugel auf die alte Position gemalt
x2 = x2 + Steigung2x; //Die x2 und y2 Koordinaten werden mit der Steigung verrechnet und
y2 = y2 + Steigung2y; //bekommen dadurch deinen neuen Wert.
g.setColor (Color.BLACK); //Farbe auf Schwarz setzen
g.fillOval (x2, y2, 30, 30); //Schwarze Kugel auf die neue Position mit x2 und y2 malen
}
}