Tenga en cuenta: no quiero la ayuda de codificación aquí, estoy Programmers
por una razón. Quiero mejorar mis habilidades de planificación / escritura del programa, no (solo) mi comprensión de Java .
Estoy tratando de descubrir cómo hacer un árbol que tenga un sistema de categorías arbitrarias, basado en las habilidades enumeradas para este juego LARP aquí . Mi intento anterior tuvo un efecto negativo sobre si una habilidad también era una categoría. Intentar codificar eso fue desordenado. Al dibujar mi árbol, noté que solo mis 'hojas' eran habilidades y había etiquetado a los demás como categorías.
Lo que busco es una forma de hacer un árbol que intente separar el Modelo y la Vista, y permita agregar un tipo arbitrario de nodo hijo (con una forma separada de ser editado / renderizado) a un padre arbitrario.
Nota: aquí todo se compra como una habilidad, incluso donde parece una propiedad. Los usuarios finales verán esto como habilidades de compra (que hacen en cajeros automáticos en papel), por lo que deben presentarse como tal, todo en la misma página.
Explicación del árbol: El árbol 'nace' con un conjunto de categorías codificadas de más alto nivel ( armas, física y mental, médica y más, etc.). A partir de esto, el usuario debe poder agregar una habilidad. En última instancia, quieren agregar la habilidad 'Especialización en espada de una mano' ( no elemento) por ejemplo. Para hacerlo, idealmente haga clic en 'agregar' con Weapons
seleccionado y luego seleccione One-handed
de un nodo de cuadro combinado que aparece en ese elemento secundario, luego haga clic en agregar nuevamente e ingrese un nombre en un campo de texto en ese nodo secundario que aparece. Luego haga clic en agregar nuevamente para agregar / especificar un 'nivel' o 'nivel' para esa hoja; primero competencia, luego especialización (por ejemplo).
Por supuesto, si quieres comprar una habilidad diferente, es una ruta completamente diferente a la hoja. Es posible que no necesite un cuadro combinado en el mismo nivel en el árbol como lo hizo con el ejemplo del arma, y también necesita alguna otra lógica detrás de él. Esto es lo que estoy teniendo problemas para entender y mucho menos programar; cómo hacer un conjunto de clases y no especificar en qué orden unirlas, pero aun así tenerlas en forma.
¿Cuál es un buen sistema para describir este tipo de árbol en código? Todos los otros ejemplos de JTree que he visto tienen un patrón predecible , y el mío no . No quiero tener que codificar todo esto en 'literales', con largas listas de qué tipo (cuadro combinado, campo de texto, etc.) del nodo secundario se debe permitir en qué padre. ¿Debo estar usando clases abstractas? Interfaces?
¿Cómo puedo hacer que este tipo de grupo de objetos sea extensible cuando agrego otras habilidades no mencionadas anteriormente que se comportan de manera diferente?
Si hay no un sistema bueno para el uso, ¿hay un proceso bueno para trabajar la manera de hacer este tipo de cosas?
Los engranajes en mi cabeza están girando:
Siempre necesito:
- Verifica al padre
- Proporcionar opciones basadas en el padre
Estoy comenzando a pensar debido a esta comunidad. Necesito algún tipo de clase abstracta / interfaz skill
que defina / describa métodos comunes para la habilidad y la categoría. Puedo (con suerte) poner reglas y opciones en una base de datos y leer desde allí. La pregunta es, creo, ahora, entre un método abstracto o de interfaz y cómo implementarlo.