Observação: não quero ajuda de codificação aqui, estou ativada Programmers
por um motivo. Quero melhorar minhas habilidades de planejamento / gravação de programas e não (apenas) meu entendimento de Java .
Estou tentando descobrir como fazer uma árvore com um sistema de categorias arbitrário, com base nas habilidades listadas para este jogo LARP aqui . Minha tentativa anterior teve um problema para saber se uma habilidade também era uma categoria. Tentando codificar isso foi confuso. Ao desenhar minha árvore, notei que apenas minhas 'folhas' eram habilidades e rotulei as outras como categorias.
O que eu busco é uma maneira de criar uma árvore que tente separar Model e View e permitir adicionar um tipo arbitrário de nó filho (com uma maneira separada de ser editada / renderizada) a um pai arbitrário.
NB Tudo aqui é comprado como uma habilidade, mesmo onde parece uma propriedade. Os Usuários Finais verão isso como habilidades de compra (o que eles fazem no caixa eletrônico); portanto, devem ser apresentados como tal, todos na mesma página.
Explicação da árvore: A Árvore "nasce" com um conjunto de categorias de nível superior codificadas ( Armas, Físico e Mental, Médico e mais, etc.). A partir disso, o usuário precisa poder adicionar uma habilidade. Por fim, eles querem adicionar a habilidade 'Especialização em espada com uma mão' ( não o item), por exemplo. Para fazer isso você teria idealmente clique em 'add', com Weapons
selecionada e, em seguida, selecionar One-handed
a partir de um nó combobox que aparece em que a criança, em seguida, clique em Adicionar novamente e digite um nome em um campo de texto em que nó filho que aparece. Em seguida, clique em adicionar novamente para adicionar / especificar um 'nível' ou 'camada' para essa folha; primeira proficiência, depois especialização (por exemplo).
Obviamente, se você quiser comprar uma habilidade diferente, é uma rota completamente diferente. Você pode não precisar de uma caixa de combinação no mesmo nível abaixo da árvore, como fez com o exemplo de arma, e também precisa de alguma outra lógica por trás dela. É isso que estou tendo problemas para entender, e muito menos programar; como criar um conjunto de classes e não especificar em que ordem anexá-las, mas ainda assim elas devem se encaixar.
Qual é um bom sistema para descrever esse tipo de árvore no código? Todos os outros exemplos de JTree que eu já vi têm algum padrão previsível , e o meu não . Eu não quero ter que codificar tudo isso em 'literais', com longas listas de que tipo (caixa de combinação, campo de texto etc.) do nó filho devem ser permitidas em qual pai. Devo estar usando classes abstratas? Interfaces?
Como posso tornar esse tipo de agrupamento de objetos extensível quando adiciono outras habilidades não listadas acima que se comportam de maneira diferente?
Se houver não um sistema bom para uso, há um processo bom para trabalhar fora como fazer esse tipo de coisa?
As engrenagens na minha cabeça estão girando:
Eu sempre preciso:
- Verifique os pais
- Forneça opções com base no pai
Estou começando a pensar que, por causa dessa semelhança, preciso de algum tipo de skill
classe abstrata / interface que defina / descreva métodos comuns de habilidade e categoria. Eu posso (espero) colocar regras e opções em um banco de dados e ler de lá para cá. A questão é que penso agora, entre um método abstrato ou de interface e como implementar isso.