Hallo,
als Aufgaben haben wir ein Breakout Game zu erstellen nach einer bestimmten Anleitung.
Wenn der Ball das Paddle trifft, soll der Vektor verändert werden
[CODE lang="java" title="Klasse Vector2D"]public Vector2D(Position p1, Position p2) {
this.dx = (double) (p2.getX() - p1.getX());
this.dy = (double) (p2.getY() - p1.getY());
}[/CODE]
Mit dem Konstruktor soll der Vektor geändert werden.
Mein Problem ist wie genau ich auf die dx und dy zugreife.
[CODE lang="java" title="Klasse Ball" highlight="4"]public void reactOnPaddle(Paddle p) {
Position offset = new Position(p.getPosition().getX() + 0.5 * p.getBreite(),p.getPosition().getY() + Constants.REFLECTION_OFFSET);
Position ball = new Position(getPosition().getX() + 0.5 * Constants.BALL_DIAMETER,getPosition().getY() + 0.5 * BALL_DIAMETER);
this.direction = new Vector2D(ball, offset);
}[/CODE]
Das war mein Ansatz, jedoch weiß ich nicht genau wie ich jetzt dx und dy erhalte um den Vektor zu ändern.
(Klasse Vector2D ist in der Klasse Ball schon mit direction deklariert)
Ich hoffe es ist verständlich und genug Kontext vorhanden.
Vielen Dank schonmal!
Evtl. ist es ein einfacher Denkfehler: Auf die Parameter und Variablen des Konstruktors kann man nicht zugreifen. Die existieren nur innerhalb des Konstruktors eben als Parameter und lokale Variablen.
Worauf man prinzipiell zugreifen kann, sind Instanzvariablen. Auf diese wird aber meist aus Gründen der Kapselung nicht direkt zugegriffen, sondern über Getter und Setter.
Vektoren ist einfach ein mathematischer Ausdruck der eine bestimmte Anzahl Elemente (n) enthält und damit eine Richtung in einem n-dimensionalen Raum angibt. Bei Dir ist es ein 2D Vektor, d.h. er hat eine dx und dx Komponente.
Als Entwickler ist das alles relativ egal - denn Vektor2D ist eine Klasse wie jede andere auch mit den üblichen Elementen wie Konstruktor(en), Instanzvariablen und Methoden.
Daher: Schau dir die Klasse an! Deine IDE wird dir hoffentlich auch entsprechende Hilfen einblenden, wenn Du eine Vector2D variable hast und dann mit . auf die Methoden zugreifst. Ich bin mir sicher, dass Du da getter und setter finden wirst für den Zugriff!
Evtl. ist es ein einfacher Denkfehler: Auf die Parameter und Variablen des Konstruktors kann man nicht zugreifen. Die existieren nur innerhalb des Konstruktors eben als Parameter und lokale Variablen.
Worauf man prinzipiell zugreifen kann, sind Instanzvariablen. Auf diese wird aber meist aus Gründen der Kapselung nicht direkt zugegriffen, sondern über Getter und Setter.
Vektoren ist einfach ein mathematischer Ausdruck der eine bestimmte Anzahl Elemente (n) enthält und damit eine Richtung in einem n-dimensionalen Raum angibt. Bei Dir ist es ein 2D Vektor, d.h. er hat eine dx und dx Komponente.
Als Entwickler ist das alles relativ egal - denn Vektor2D ist eine Klasse wie jede andere auch mit den üblichen Elementen wie Konstruktor(en), Instanzvariablen und Methoden.
Daher: Schau dir die Klasse an! Deine IDE wird dir hoffentlich auch entsprechende Hilfen einblenden, wenn Du eine Vector2D variable hast und dann mit . auf die Methoden zugreifst. Ich bin mir sicher, dass Du da getter und setter finden wirst für den Zugriff!
Ja war ein Denkfehler von mir. Habe ich auch später gemerkt. Hatte später im Programm ein Fehler mit der Methode und war deshalb bisschen verwirrt. Jetzt ist alles gut.
Danke trotzdem für die Antwort!