Nota: non voglio aiuto per la codifica qui, sono attivo Programmers
per un motivo. Voglio migliorare le mie capacità di pianificazione / scrittura del programma non (solo) la mia comprensione di Java .
Sto cercando di capire come realizzare un albero con un sistema di categorie arbitrario, basato sulle abilità elencate per questo gioco LARP qui . Il mio precedente tentativo aveva un effetto positivo sul fatto che un'abilità fosse anche una categoria. Cercare di codificarlo era disordinato. Disegnando il mio albero ho notato che solo le mie "foglie" erano abilità e avevo etichettato gli altri come categorie.
Quello che sto cercando è un modo per creare un albero che tenti di separare Modello e Vista e consentire l'aggiunta di un tipo arbitrario di nodo figlio (con un modo separato di essere modificato / reso) a un genitore arbitrario.
NB Tutto qui viene acquistato come un'abilità, anche dove sembra una proprietà. Gli utenti finali vedranno questo come capacità di acquisto (cosa che fanno su bancomat), quindi dovrebbero essere presentate come tali, tutte nella stessa pagina.
Spiegazione dell'albero: L'albero è "nato" con una serie di categorie di livello più elevato ( armi, fisica e mentale, medicina e altro). Da questo l'utente deve poter aggiungere un'abilità. Alla fine, ad esempio, vogliono aggiungere l' abilità "Specializzazione spada a una mano" ( non un oggetto). Per fare ciò, idealmente fai clic su 'aggiungi' con Weapons
selezionato e quindi seleziona One-handed
da un nodo della casella combinata che appare su quel figlio, quindi fai clic di nuovo su Aggiungi e inserisci un nome in un campo di testo su quel nodo figlio che appare. Quindi fare di nuovo clic su Aggiungi per aggiungere / specificare un 'livello' o 'livello' per quella foglia; prima competenza, poi specializzazione (ad esempio).
Naturalmente, se vuoi acquistare un'abilità diversa, è un percorso completamente diverso dalla foglia. Potresti non aver bisogno di una casella combinata allo stesso livello in basso dell'albero come hai fatto con l'esempio dell'arma, e anche di avere qualche altra logica dietro di esso. Questo è ciò di cui ho difficoltà a districarmi e tanto meno a programmare; come creare un insieme di classi e non specificare in quale ordine collegarli insieme, ma comunque adattarli tutti.
Qual è un buon sistema per descrivere questo tipo di albero nel codice? Tutti gli altri esempi di JTree che ho visto hanno uno schema prevedibile , e il mio no . Non voglio codificare tutto questo in "valori letterali", con lunghi elenchi di quale tipo (casella combinata, campo di testo ecc.) Del nodo figlio dovrebbe essere consentito su quale genitore. Dovrei usare classi astratte? Interfacce?
Come posso rendere estensibile questo tipo di cluster di oggetti quando aggiungo altre abilità non elencate sopra che si comportano diversamente?
Se c'è non è un buon sistema per l'uso, c'è un processo buona per lavorare fuori come fare questo genere di cose?
Gli ingranaggi nella mia testa stanno girando:
Ho sempre bisogno di:
- Controlla il genitore
- Fornire opzioni in base al genitore
Sto cominciando a pensare a causa di questa comunanza ho bisogno di una sorta di skill
classe astratta / interfaccia che definisce / delinea metodi comuni per abilità e categoria. Posso (si spera) mettere regole e opzioni in un database e leggere da lì. La domanda è ora penso, tra un metodo astratto o di interfaccia e come implementarlo.