:JAVA: Spinnen wandern in der BoxDie Spinnen sollen nun in der Box umher laufen: spider-v1.3.jar
Die Spinnen brauchen eine Richtung statt einem Ziel:
private double laufRichtung; // Laufrichtung im Bogenmass 360 Grad = 2*Pi
Und sollten sich in der Laufrichtung fortbewegen:
public void leben(){
ortX += (int)(Math.sin(laufRichtung)*groesse/4);
ortY -= (int)(Math.cos(laufRichtung)*groesse/4);
}
Woher bekommen wir den Rand? Der Rand wird uns mit der Zeichenfläche geliefert: Graphics g, und die Zeichenfläche gibts beim Zeichnen:
public void malen(Graphics g){ // die Spinne malen
checkBorder(g.getClipBounds()); // dabei erst mal checken, ob es im Rahmen bleibt
g.setColor(farbe);
g.fillOval(ortX-groesse/2, ortY-groesse/2, groesse, groesse);
g.setColor(Color.black);
g.drawString("Viech",ortX-5,ortY-groesse/2+10);
}
Nun kann in einer kleinen Methode checkBorder(g.getClipBounds()) die Randberührung geprüft werden und Gegenmaßnahmen eingeleitet werden:
void checkBorder(Rectangle r){ // Überprüfen ob ein Rand verletzt wird
boolean b = false; // Wir gehen nicht davon aus
if (ortX < groesse){
ortX = groesse; // Abstand halten
b = true; // Die Richtung ist nicht mehr gut.
}
else if (ortX > r.width-groesse){
ortX = r.width-groesse;
b = true;
}
if (ortY < groesse){
ortY = groesse;
b = true;
}
else if (ortY > r.height-groesse){
ortY = r.height-groesse;
b = true;
}
if (b){
laufRichtung += 2*Math.PI*(Math.random()-0.4); // Wir kehren um
if (laufRichtung > 2*Math.PI) laufRichtung -= 2*Math.PI; // nicht überdrehen
}
}
Implementieren Sie die Erweiterungen.
Erstellen Sie ein Sequenzdiagramm.
Lösung-Projekt: spider-v1.3.zip
© Oliver Mezger