Java: static, void, Klassen und Co
Ich habe ja gesagt, dass ich nun schon einigermaßen mit den Grundfunktionen von Java und Eclipse zurechtkomme, kapiere jedoch das Grundprinzip - die objektorientierte Programmierung - eigentlich immer noch nicht. Und zwar arbeite ich jetzt schon an einem Pong, was grundlegend für mich auch kein allzu großes Problem darstellt, wären da nicht diese doofen Klassen.
Gibt es nur eine Main-Klasse, so habe ich eigentlich keine Probleme damit. Dort kann ich alle Variablen im "Header" definieren und dann bequem auf diese zugreifen. Leider sollen wir das Pong-Projekt aber in verschiedenen Klassen gestalten wie Paddle.class, Ball.class und Renderer.class, was mich zum verzweifeln bringt.
Ich verstehe es einfach nicht, wie ich nun zum Beispiel von der Paddle-Klasse auf die Variable "window_x" für die Breite des Fensters der Renderer-Klasse zugreifen kann. Ich habe jetzt folgenden Code in der Klasse Paddle.class untergebracht und möchte dabei einfach nur auf die Variable "pan1_y" aus der Klasse Renderer zugreifen:
- Code: Alles auswählen
pan1_y = pan1_y - pad1_speed;
Der oben eingefügte Code befindet sich in einer Methode der Paddle-Klasse ohne Parameter. Ist das so richtig? Hier der Ausschnitt mit der Variablen-Initialisierung der Renderer-Klasse (sie ist public gesetzt):
- Code: Alles auswählen
public class Renderer extends Frame {
private Image dbImage;
private Graphics dbGraphics;
int win_x = 1000;
int win_y = 750;
int pan1_width = 20;
int pan1_height = 150;
int pan1_x = 30;
int pan1_y = (win_y / 2) - (pan1_height / 2);
int pan2_width = 20;
int pan2_height = 150;
int pan2_x = win_x - 50;
int pan2_y = (win_y / 2) - (pan2_height / 2);
int ball_x = 400;
int ball_y = 300;
int ball_r = 10;
int pan1_speed = 12;
boolean ball_imspiel = false;
Zuerst einmal ist es sehr sinnvoll, dass man ein Projekt in mehrere Klassen unterteilt. Wie man jetzt genau auf eine Variable oder so einer anderen Klasse zugreift, weiß ich nicht. Darum habe ich die letzte Klassenarbeit ebenfalls ein bisschen verhauen.
Ich habe es mir mittlerweile ein bisschen genauer angesehen. Meines Wissens benötigst du eben immer einen Konstruktor, welchen du dann in einer anderen Klasse aufrufen kannst. Dadurch kannst du dir eben ein Objekt der jeweiligen Klasse speichern und dann auch auf deren Funktionen oder Variablen zugreifen.
Void bedeutet, dass eine Funktion keinen Rückgabewert hat. Das benötigt man oft um beispielsweise die Geschwindigkeit eines Autos zu erhöhen. Eine solche Funktion müsste die Geschwindigkeit einfach nur um einen bestimmten Wert erhöhen und nicht diesen zurückgeben.
Ebenfalls gibt es auch andere Funktionen, die dann eben Strings, Integer oder andere Werte als Rückgabewert haben. Bei solchen Funktionen muss man eben dann auch schon bei der Funktionsdekleration sagen, was der jeweilige Rückgabewert beinhaltet.
Vielen Dank schon einmal für die Antwort, welche mir auf jeden Fall weitergeholfen hat. Aus anderen Einstiegsprojekten des Praktikums hier, habe ich immerhin noch den Aufbau solch einer Methode gefunden, die die Werte direkt mitgibt, welche dann von einer anderen Klasse auch ausgelesen werden können. Dazu muss ich ja einfach nur eine Methode erstellen und die gewünschten Variablen als Parameter übergeben.
So habe ich es jetzt auch endlich geschafft, Variablen aus zwei der Main-Class untergeordneten Klassen untereinander auszutauschen. In meinem Pong-Spiel sieht das konkret so aus, dass ich in der Renderer-Klasse die KI-Funktion des Paddels aufrufe und die Werte der Ball-Klasse dann über ball1.x etc. übergebe. So kann die KI des Paddels nun auch endlich mitbekommen, wohin sich das Paddel bewegen muss, um den Ball abzufangen.
Link dieser Seite https://www.talkteria.de/forum/topic-189756.html
Ähnliche Themen
Weitere interessante Themen
- Palmen Pflanzen - brauche Tipp / Empfehlung 1132mal aufgerufen · 1 Antworten · Autor: Triops · Letzter Beitrag von Verbena
Forum: Garten & Pflanzen
- Palmen Pflanzen - brauche Tipp / Empfehlung
- Gartenbambus im Treppenhaus überwintern? 1182mal aufgerufen · 1 Antworten · Autor: ZappHamZ · Letzter Beitrag von Verbena
Forum: Garten & Pflanzen
- Gartenbambus im Treppenhaus überwintern?
- Intimrasur - Bekomme immer Pickel! 1584mal aufgerufen · 1 Antworten · Autor: Wifey · Letzter Beitrag von Verbena
Forum: Fingernägel, Haut & Haare
- Intimrasur - Bekomme immer Pickel!
- Anleitung für Star Frisur 1238mal aufgerufen · 1 Antworten · Autor: Osterhasi · Letzter Beitrag von Verbena
Forum: Fingernägel, Haut & Haare
- Anleitung für Star Frisur
- Ist Sprühwachs für die Haare schädlich? 2422mal aufgerufen · 1 Antworten · Autor: winny2311 · Letzter Beitrag von Verbena
Forum: Fingernägel, Haut & Haare
- Ist Sprühwachs für die Haare schädlich?