Hi zusammen
Wir haben die Aufgaben erhalten, eine Applikation welche 2 oder mehrere Bälle hat, die sich bewegen und bei einem Zusammenprall abprallen. Jedoch habe ich keinen blassen Schimmer wie ich das mit der Abprallfunktion hinbekommen soll... Wer hat ne Idee?
Wir haben die Aufgaben erhalten, eine Applikation welche 2 oder mehrere Bälle hat, die sich bewegen und bei einem Zusammenprall abprallen. Jedoch habe ich keinen blassen Schimmer wie ich das mit der Abprallfunktion hinbekommen soll... Wer hat ne Idee?
Java:
public class MoveBall extends JPanel implements Runnable {
int xRed = 180;//xKoordinate für Rot
int xBlue = 60;//xKoordinate für Blau
int xWayRed = 1;//Steuerungsrichtung
int xWayBlue = 1;
int yWayRed = -1;
int yWayBlue = -1;
int yRed = 160;
int yBlue = 150;
int radius = 50;
int speedRed = 3;
int speedBlue = 5;
int xSize = 500;
int ySize = 550;
public MoveBall(){
this.setBackground(Color.WHITE);
this.setVisible(true);
start();
}
private void start() {
Thread move = new Thread(this);
move.start();
}
public void run() {
while (true) {
//Randabprall für Rot
if (xRed+radius == xSize) {
xWayRed = -1;
}
if (yRed+radius == ySize) {
yWayRed = -1;
}
if (xRed == 0) {
xWayRed = 1;
}
if (yRed == 0) {
yWayRed = 1;
}
//Randabprall für Blau
if (xBlue+radius == xSize) {
xWayBlue = -1;
}
if (yBlue+radius == ySize) {
yWayBlue = -1;
}
if (yBlue == 0) {
yWayBlue = 1;
}
if (xBlue == 0) {
xWayBlue = 1;
}
//Kollision
if(xRed == xBlue){
if(yWayRed ==1){
yWayRed = -1;
}
if(yWayBlue == 1){
yWayBlue = -1;
}
}
if(yRed+(radius) == yBlue+(radius)){
System.out.println("Getroffen bei Y");
xWayRed = xWayRed *(-1);
xWayBlue = xWayBlue *(-1);
}
repaint();
xRed += xWayRed;
yRed += yWayRed;
xBlue += xWayBlue;
yBlue += yWayBlue;
try {
Thread.sleep(6);
}
catch (InterruptedException exc) {
exc.printStackTrace();
}
}
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
g.fillOval(xRed, yRed, radius, radius);
g.setColor(Color.BLUE);
g.fillOval(xRed, yBlue, 10, 10);
g.setColor(Color.BLUE);
g.fillOval(xBlue, yBlue, radius, radius);
}
}
Zuletzt bearbeitet von einem Moderator: