Remarque: je ne veux pas d'aide sur le codage ici, je suis allumé Programmers
pour une raison. Je veux améliorer mes compétences en planification / rédaction de programmes et non (seulement) ma compréhension de Java .
J'essaie de comprendre comment créer un arbre qui a un système de catégories arbitraire, basé sur les compétences répertoriées pour ce jeu LARP ici . Ma tentative précédente avait un bool pour savoir si une compétence était également une catégorie. Essayer de coder autour de ça était compliqué. En dessinant mon arbre, j'ai remarqué que seules mes «feuilles» étaient des compétences et j'avais étiqueté les autres comme des catégories.
Ce que je recherche, c'est un moyen de créer un arbre qui tente de séparer le modèle et la vue, et de permettre l'ajout d'un type arbitraire de nœud enfant (avec une manière distincte d'être édité / rendu) à un parent arbitraire.
NB Tout ici est acheté comme une compétence, même si cela ressemble à une propriété. Les utilisateurs finaux verront cela comme des compétences d'achat (ce qu'ils font sur papier) et devraient donc être présentés comme tels, tous sur la même page.
Explication de l'arbre: L'arbre est «né» avec un ensemble de catégories de plus haut niveau codées en dur ( armes, physique et mental, médical et plus etc.). À partir de cela, l'utilisateur doit pouvoir ajouter une compétence. En fin de compte, ils veulent ajouter la compétence `` Spécialisation de l'épée à une main '' ( pas l' objet) par exemple. Pour ce faire, vous devriez idéalement cliquer sur `` ajouter '' avec la Weapons
sélection, puis sélectionner One-handed
dans un nœud de zone de liste déroulante qui apparaît sur cet enfant, puis cliquer à nouveau sur et entrer un nom dans un champ de texte sur ce nœud enfant qui apparaît. Cliquez ensuite sur ajouter pour ajouter / spécifier un «niveau» ou un «niveau» pour cette feuille; première compétence, puis spécialisation (par exemple).
Bien sûr, si vous voulez acheter une compétence différente, c'est un chemin complètement différent vers la feuille. Vous n'avez peut-être pas besoin d'une zone de liste déroulante au même niveau dans l'arbre que vous l'avez fait avec l'exemple de l'arme, et vous avez également besoin d'une autre logique. C'est ce que j'ai du mal à comprendre et encore moins à programmer; comment créer un ensemble de classes et ne pas spécifier dans quel ordre les attacher ensemble, mais toujours les adapter.
Quel est un bon système pour décrire ce type d'arbre dans le code? Tous les autres exemples de JTree que j'ai vus ont un schéma prévisible , et le mien ne l'est pas . Je ne veux pas avoir à coder tout cela en «littéraux», avec de longues listes de quel type (zone de liste déroulante, champ de texte, etc.) de nœud enfant devrait être autorisé sur quel parent. Dois-je utiliser des classes abstraites? Des interfaces?
Comment puis-je rendre ce type de cluster d'objets extensible lorsque j'ajoute d'autres compétences non répertoriées ci-dessus qui se comportent différemment?
S'il n'y a pas un bon système à utiliser, y a-t-il un bon processus pour savoir comment faire ce genre de chose?
Les engrenages dans ma tête tournent:
J'ai toujours besoin de:
- Vérifiez le parent
- Fournir des options basées sur le parent
Je commence à penser à cause de cette communauté, j'ai besoin d'une sorte de skill
classe abstraite / interface qui définit / décrit les méthodes communes de compétence et de catégorie. Je peux (espérons-le) mettre des règles et des options dans une base de données et lire à partir de là. Je pense que la question est maintenant, entre une méthode abstraite ou d'interface et comment la mettre en œuvre.