Die Sache mit vielen Klassen und Objekten... (Java)

_Sin_

Enthusiast
Thread Starter
Mitglied seit
11.09.2007
Beiträge
144
Ort
Heidelberg
Ich versuche mal, das Problem so deutlich wie möglich zu veranschaulichen:

Beschreibung des Programms:

Ich habe vor eine Art Spiel in Java zu programmieren. Das ganze soll ungefaehr so wie ein Pokemon oder ein Digimon-Kampf funktionieren, jedoch soll es drum herum auch möglich sein, Items zu kaufen, seine eine Kreatur, die man hat im Kampf stärker werden zu lassen und und und.
Also nicht einfach nur HP abziehen und sterben lassen, sondern verschiedene Fähigkeiten einsetzen und taktisch kämpfen.
So weit so gut, das alles ist eigentlich nicht das Problem. Das ganze konnte ich mit Objekten und ihren Attributen und Methoden ziemlich gut realisieren.

Ich habe eine Klasse aufgemacht, die sich nur mit dem Spieler als Objekt beschäftigt. Darin eine Konstruktor-Methode, die Attribute des Spielers (mit welchem Monster kämpft er, wie viel Geld hat er, welche Items, Name, etc)
Dann hab ich eine Klasse die sich mit den Monstern als Objekt beschäftigt.
Darin auch eine Konstruktor-Methode, die Attribute der Monster (Energie, Attacken, Level, Name, etc)
Das alles kein Problem. Über die "Haupt-Klasse" erstelle ich die Objekte (ein Spieler-Objekt und die Objekte der diversen Monster)

jetzt hab ich aber das Problem, dass ich das gesamte restliche Spiel in diese Haupt-Klasse gehauen hab.
Bis jetzt... ich bin noch nicht sooo arg weit, sind das 1000 Zeilen code. Es gibt ein Tutorial, man kann sein Monster wählen, eine Spezialfähigkeit und noch einige Sachen mehr.

Jetzt mein Problem:

Ich möchte es schaffen, sowohl die Monsterauswahl, als auch die Wahl der Spezialfähigkeit in eine andere neue Klasse zu packen.
DAS allein hab ich schon geschafft, und eigentlich könnte ich auch auf die Methoden zur Auswahl zugreifen, allerdings hab ich das Problem, dass diese zusätzliche Klasse nicht auf die Variablen und Methoden der Objekte zugreifen kann, welche ja in der "Haupt-Klasse" definiert wurden.
Wie schaffe ich es, dass ich die zusätzliche Klasse fehlerfrei kompilieren kann, und diese Zugriff auf die Attribute und Methoden der Objekte hat?

Das wäre jetzt erstmal mein Problem, welches es gilt zu lösen.

Ich hoffe, das Problem ist verständlich und es kann mir jemand da weiter helfen.
Bitte wenn möglich keine Verweise auf irgendwelche Java-Handbücher oder der gleichen. ich denke das Problem ist ziemlich konkret formuliert und kann auch so beantwortet werden. Ich hab leider einfach nicht das Wissen dazu...^^
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Also ganz ehrlich, so richtig verständlich ist es nicht. Und soweit ich es verstehe, ist das Design eher fragwürdig. Aber ich versuchs mal.

Wenns nur darum geht, auf Methoden der Hauptklasse zuzugreifen, von der Du vermutlich keine Instanz erzeugt hast, kannst Du diese als static definieren... Die Frage ist aber eher, ob das Auslagern der Monsterwahl überhaupt sinnvoll ist, wenn Du viele Abhängigkeiten hast.

Würde Dir ein anderes Design vorschlagen, nutz die OO. Zum Beispiel ein Interface Spezialfähigkeit und für jede Fähigkeit dann eine neue Klasse, die dieses Interface implementiert. Nun deinen Monstern eine setFähigkeit(Spezialfähigkeit)-Methode verpassen und / oder nen entsprechenden Konstruktor.
Zum erstellen der Monster kannst Du dann ja eine MonsterFactory nehmen, die statische createMonster(Monstertyp, Fähigkeit) Methoden bereitstellt.

Das war vermutlich nicht die Antwort, die Du gesucht hast, aber auf diese Weise wird dein Programm etwas flexibler und wartbarer.
 
Joa, ich hab das Problem mitlerweile aufgegeben und einfach alles in die Haupt-Klasse geschrieben. Bin noch eher in den Anfängen der OOP und für dieses Projekt sollte das jetzt erstmal so reichen.
Trotzdem danke!
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh