Uwaga: nie chcę tutaj pomocy w kodowaniu, jestem włączony Programmers
z jakiegoś powodu. Chcę poprawić swoje umiejętności planowania / pisania programów, a nie (tylko) rozumienie języka Java .
Próbuję wymyślić, jak stworzyć drzewo, które ma dowolny system kategorii, w oparciu o umiejętności wymienione w tej grze LARP tutaj . Moja poprzednia próba polegała na tym, że umiejętność była również kategorią. Próba kodowania tego była nieporządna. Rysując moje drzewo zauważyłem, że tylko moje „liście” były umiejętnościami, a pozostałe oznaczyłem jako kategorie.
To, co szukam, to sposób na utworzenie drzewa, które będzie próbowało oddzielić Model i Widok, i pozwolić na dodanie dowolnego typu węzła potomnego (z osobnym sposobem edycji / renderowania) do dowolnego rodzica.
Uwaga: Wszystko tutaj jest kupowane jako umiejętność, nawet jeśli wydaje się być własnością. Użytkownicy końcowi uznają to za umiejętności kupowania (co robią na bankomacie w formie papierowej), dlatego należy je przedstawić jako takie, wszystkie na tej samej stronie.
Wyjaśnienie drzewa: Drzewo „rodzi się” z zestawem kategorii zakodowanych na najwyższym poziomie ( broń, fizyczne i psychiczne, medyczne itd.). Na tej podstawie użytkownik musi mieć możliwość dodania umiejętności. Ostatecznie chcą na przykład dodać umiejętność Specjalizacja miecza jednoręcznego ( nie przedmiot). Aby to zrobić, najlepiej kliknij „dodaj” z Weapons
zaznaczonym, a następnie wybierz One-handed
z węzła combobox, który pojawia się na tym dziecku, a następnie kliknij ponownie dodaj i wprowadź nazwę w polu tekstowym na tym węźle potomnym, który się pojawi. Następnie kliknij przycisk Dodaj ponownie, aby dodać / określić „poziom” lub „poziom” dla tego liścia; najpierw biegłość, potem specjalizacja (na przykład).
Oczywiście, jeśli chcesz kupić inną umiejętność, jest to zupełnie inna droga do liścia. Możesz nie potrzebować pola kombi na tym samym poziomie w dół drzewa, co na przykład z bronią, i potrzebujesz też innej logiki. Właśnie z tego powodu nie mogę się skupić na programowaniu; jak utworzyć zestaw klas i nie określać kolejności, w jakiej należy je ze sobą połączyć, ale nadal mają wszystkie pasujące.
Jaki jest dobry system do opisywania tego rodzaju drzewa w kodzie? Wszystkie inne przykłady JTree, które widziałem, mają pewien przewidywalny wzór, a mój nie . Nie chcę kodować tego wszystkiego w „literałach”, z długimi listami tego, jaki typ (pole kombi, pole tekstowe itp.) Węzła potomnego powinien być dozwolony na jakim rodzicu. Czy powinienem używać klas abstrakcyjnych? Interfejsy?
Jak mogę sprawić, by ten rodzaj obiektów był rozszerzalny, gdy dodam inne umiejętności niewymienione powyżej, które zachowują się inaczej?
Jeśli istnieje nie system dobry do użycia, czy istnieje dobry sposób na wypracowanie jak robić tego typu rzeczy?
Koła zębate w mojej głowie obracają się:
Zawsze muszę:
- Sprawdź rodzica
- Podaj opcje w zależności od rodzica
Zaczynam myśleć ze względu na tę skill
powszechność. Potrzebuję czegoś w rodzaju klasy abstrakcyjnej / interfejsu, która definiuje / określa powszechne metody umiejętności i kategorii. Mogę (mam nadzieję) umieścić zasady i opcje w bazie danych i czytać stamtąd. Pytanie brzmi, jak myślę teraz, między metodą abstrakcyjną lub metodą interfejsu a tym, jak ją zaimplementować.