Spinnen wandern in der Box
Die Spinnen sollen nun in der Box umher laufen: spider-v1.3.jar
Eine Richtung geben
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);
}
Nicht über den Rand gehen
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. Lösungen: [spider-v1-3_bluej.zip] [spider-v1-3_intellij.zip]
Die Viecher sollen auf den blauen Punkt zulaufen, modifizieren Sie den Code.
Erstellen Sie ein Sequenzdiagramm.