ist es jetzt etwas besser?^^
Ich weiß nicht genau, ob ich eine Verbesserung sehe. Auf jeden Fall fehlt etwas Dokumentation, damit man weiß, was wo passiert und gemacht wird.
Ich habs mal durch den Formatierer laufen lassen, jetzt siehts so aus
Code:
import sum.kern.*;
import sum.werkzeuge.*;
/**
* @author MiMaMartin
* @version 1.0
*/
public class Kugel extends Stift {
// Bezugsobjekte
double a = 0.05;
double c = 10;
Rechner meinRechner;
Bildschirm derBildschirm;
// Attribute
// Konstruktor
public Kugel(Bildschirm b) {
super();
meinRechner = new Rechner();
derBildschirm = b;
}
// Dienste
// Diese Methode zeichnet eine Kugel mit ???
// Wo kommt dieses c für die Methode, die du in der Methode aufrufst eigentlich her?
// Wenn es keine Übergabeparameter ist, macht dann die Methode überhaupt Sinn?
public void zeichneKugel() {
zeichneKreis(c);
}
/**
/ Diese Methode loescht die Kugel. Dabei wird die alte Kugel geloescht, eine
/ neue gezeichnet und dann noch etwas mit ihr gemacht
/*
public void loescheKugel() {
radiere();
zeichneKreis(c);
normal();
}
public void Richtung() {
dreheBis(meinRechner.ganzeZufallszahl(-45, 45));
}
public void Bewegung() {
zeichneKugel();
loescheKugel();
bewegeUm(a);
zeichneKugel();
}
public void Kollision2(double x1, double x2, double y2, double y1,
double a1, double a2, double d1, double d2) {
// Diese if Abfrage macht etwas sehr seltsames
if (((c * c) * meinRechner
.wurzel(((((hPosition() - x2) - (hPosition() - x1))
* (((hPosition() - x2) - (hPosition() - x1))) +
(((vPosition() - y2) - (vPosition() - y1)) * ((vPosition() - y2) -
(vPosition() - y1)))) - (((x1 * y2) - (x2 * y1)) * ((x1 * y2) -
(x2 * y1)))))) > 0) {
dreheUm(180 - 2 * winkel());
} else if (((c * c) * meinRechner
.wurzel(((((a2 - (hPosition())) - (a1 - (hPosition())))
* (((a2 - (hPosition())) - (a1 - (hPosition())))) + (((d2 - (vPosition())) - (d1 - (vPosition()))) * ((d2 - (vPosition())) - (d1 - (vPosition()))))) - (((a1 * d2) - (a2 * d1)) * ((a1 * d2) - (a2 * d1)))))) > 0) {
dreheUm(180 - 2 * winkel());
} else if (hPosition() < 10 || hPosition() > 630) {
loescheKugel();
bewegeBis(derBildschirm.breite() / 2, derBildschirm.hoehe() / 2);
Richtung();
} else if (vPosition() > (derBildschirm.hoehe() - 10)) {
dreheUm(360 - 2 * winkel());
} else if (vPosition() < 10) {
dreheUm(360 - 2 * winkel());
}
}
public void Kollision(double pos, double pos2) {
if (hPosition() < 40 && vPosition() > pos && vPosition() < (pos + 75)) {
dreheUm(180 - 2 * winkel());
}
if (hPosition() > 600 && vPosition() > pos2
&& vPosition() < (pos2 + 75)) {
dreheUm(180 - 2 * winkel());
} else if (hPosition() < 10 || hPosition() > 630) {
loescheKugel();
bewegeBis(derBildschirm.breite() / 2, derBildschirm.hoehe() / 2);
Richtung();
} else if (vPosition() > (derBildschirm.hoehe() - 10)) {
dreheUm(360 - 2 * winkel());
} else if (vPosition() < 10) {
dreheUm(360 - 2 * winkel());
}
}
}
Ich hab bei zwei Methoden mal etwas kommentiert, damit du siehst, was ich unter Kommentierung verstehe.
Ich hab leider nicht soviel Lust, mich durch den ganzen Codewust zu arbeiten, aber es ist schwer leserlich, weswegen du auch den Fehler so schwer findest.
Was mich noch stört ist sowas:
Code:
else if (((c * c) * meinRechner
.wurzel(((((a2 - (hPosition())) - (a1 - (hPosition())))
* (((a2 - (hPosition())) - (a1 - (hPosition())))) + (((d2 - (vPosition())) - (d1 - (vPosition()))) * ((d2 - (vPosition())) - (d1 - (vPosition()))))) - (((a1 * d2) - (a2 * d1)) * ((a1 * d2) - (a2 * d1)))))) > 0)
Das ist viel zu lang und verschachtelt. Da musst du dir was einfallen lassen. Evtl brauchst du mehrere Methoden, die dann ausführen sollen, was du willst. zB eine Methode "wurzel()" die macht, was auch immer du da willst. Und dann noch weitere Methoden, die einen Punkt verschieben oder was auch immer.
Beim Programmieren immer auf Lesbarkeit achten, dann ist er auch leichter wartbar. Vor allem sollte man auch in der Methode kommentieren. zB was passiert da in meiner if Abfrage. Kommentieren immer gleich wenn man etwas schreibt. Nicht erst danach, wo man wieder vergessen hat, was der Code da eigentlich macht.
Falls du Angst hast, du wirst dann nicht fertig und dein Lehrer gibt dir ne schlechte Note, dann sag deinen Eltern, dass euer Lehrer euch das schlecht erklärt und schick sie mal zu ihm.
Desweiteren kann ich als IDE Eclipse empfehlen. Damit kann ich am Besten arbeiten.
Download hier. Eclipse Seite Wikipedia Eintrag