Bitte beachten Sie: Ich möchte hier keine Hilfe beim Codieren, ich bin Programmers
aus einem bestimmten Grund dabei. Ich möchte meine Programmplanungs- / Schreibfähigkeiten verbessern, nicht (nur) mein Verständnis von Java .
Ich versuche herauszufinden, wie man einen Baum mit einem beliebigen Kategoriesystem erstellt, basierend auf den Fähigkeiten, die hier für dieses LARP-Spiel aufgeführt sind . Mein früherer Versuch hatte ein Problem damit, ob eine Fertigkeit auch eine Kategorie war. Der Versuch, das zu umgehen, war chaotisch. Als ich meinen Baum herausholte, bemerkte ich, dass nur meine 'Blätter' Fähigkeiten waren und ich hatte die anderen als Kategorien bezeichnet.
Was ich will, ist eine Möglichkeit, einen Baum zu erstellen, der versucht, Modell und Ansicht zu trennen, und einem beliebigen übergeordneten Knoten einen beliebigen Typ eines untergeordneten Knotens hinzuzufügen (mit einer separaten Möglichkeit, bearbeitet / gerendert zu werden).
NB Alles hier wird als Fähigkeit gekauft, auch wenn es wie eine Eigenschaft scheint. Die Endbenutzer werden dies als das Kaufen von Fähigkeiten ansehen (was sie auf Papier tun) und sollten dies als solche darstellen, alle auf derselben Seite.
Erklärung des Baumes: Der Baum wird mit einer Reihe von hartcodierten Kategorien auf höchster Ebene ( Waffen, physische und mentale, medizinische und mehr usw.) "geboren". Daraus muss der Benutzer eine Fähigkeit hinzufügen können. Letztendlich möchten sie zum Beispiel die Fertigkeit 'Einhandschwert-Spezialisierung' ( nicht Gegenstand) hinzufügen . Klicken Sie dazu im Idealfall bei Weapons
Auswahl auf "Hinzufügen" und wählen Sie dann One-handed
einen Kombinationsfeldknoten aus, der für das untergeordnete Element angezeigt wird. Klicken Sie dann erneut auf "Hinzufügen" und geben Sie einen Namen in ein Textfeld für das untergeordnete Element ein, das angezeigt wird. Klicken Sie dann erneut auf "Hinzufügen", um ein "Level" oder "Tier" für dieses Blatt hinzuzufügen / festzulegen. Erst Kompetenz, dann Spezialisierung (zum Beispiel).
Wenn Sie eine andere Fertigkeit kaufen möchten, ist dies natürlich ein völlig anderer Weg zum Blatt. Möglicherweise benötigen Sie kein Kombinationsfeld auf der gleichen Ebene im Baum wie im Waffenbeispiel und benötigen auch eine andere Logik dahinter. Dies ist, was ich Probleme habe, meinen Kopf herumzukriegen, geschweige denn einzulernen; Wie erstelle ich eine Gruppe von Klassen und gebe nicht an , in welcher Reihenfolge sie zusammengefügt werden sollen?
Was ist ein gutes System, um diese Art von Baum im Code zu beschreiben? Alle anderen JTree-Beispiele, die ich gesehen habe, weisen vorhersehbare Muster auf, meine jedoch nicht . Ich möchte nicht alles in 'Literalen' codieren müssen, mit langen Listen, welcher Typ (Kombinationsfeld, Textfeld usw.) des Kinderknotens auf welchem Elternteil zulässig sein soll. Soll ich abstrakte Klassen verwenden? Schnittstellen?
Wie kann ich diese Art von Objektclustern erweiterbar machen, wenn ich andere Fähigkeiten hinzufüge, die nicht oben aufgeführt sind und sich anders verhalten?
Wenn es kein gutes System gibt, gibt es einen guten Prozess, um herauszufinden, wie man so etwas macht?
Die Zahnräder in meinem Kopf drehen sich:
Ich muss immer:
- Überprüfen Sie die Eltern
- Geben Sie Optionen basierend auf dem übergeordneten Element an
Ich beginne zu denken, weil ich aufgrund dieser Gemeinsamkeit eine Art abstrakte / Interface- skill
Klasse brauche , die gängige Methoden für Fähigkeiten und Kategorien definiert / umreißt. Ich kann (hoffentlich) Regeln und Optionen in eine Datenbank einfügen und von dort nachlesen. Die Frage ist nun, ob es sich um eine abstrakte oder eine Schnittstellenmethode handelt und wie man das umsetzt.