Я создаю RPG-игру для подземелий на Java и застрял в создании структуры данных.
У меня есть много объектов Thing, которые я могу скопировать, чтобы заполнить подземелье.Например, есть объект Thing с хлебом, объект Thing с мечом, объект Thing с кольчугой, существо (я) монстров и т. Д. Я хочу сохранить их в центральной библиотеке, а затем иметь возможность извлекать объект, используя определенныезапросы.Я хочу хранить их, используя следующие поля:
int minLevel
int maxLevel
double probability
int[] types
Таким образом, у ржавого меча будет minLevel
1, maxLevel
3, probability
редкости (3%),и [type.SWORD,type.WEAPON,type.ITEM,TYPE.EQUIP]
.Лучший меч имел бы minLevel
2, maxLevel
10, редкость (1%).
Тогда я хочу получить случайный type.SWORD
из библиотеки и сказать, что я на уровне 3. Яследует приобретать ржавый меч чаще, чем лучший, исходя из их вероятности.Если бы я извлек type.SWORD
из библиотеки, запрашивая уровень 10, я бы вернул только лучший меч.
Надеюсь, это имеет смысл.
РЕДАКТИРОВАТЬ ВНа этапе инициализации будут созданы все основные объекты.Такие вещи, как доступное оружие, броня, еда, зелья, палочки, все основные возможные вещи, которые имеют уникальную графическую плитку в игре.Затем, когда я хочу разместить объект где-нибудь, я просто делаю копию одной из доступных вещей, немного корректирую ее статистику и втыкаю ее в мир.Фактические предметы - это подкласс корневого класса Thing, такие как класс Creature, Item, Equip (расширяет предмет), Weapon (расширяет снаряжение), Armor (расширяет снаряжение), Food (расширяет предмет) и т. Д. Но я хочу отметитьони разные в базе данных библиотеки, я хочу использовать дополнительные теги, такие как type.RARE, type.ARTIFACT, type.CURSED, поэтому я хочу, чтобы дополнительные теги помимо класса.
Игра использует LIBGDX, чтобы быть доступнойна Android и в качестве апплета.Я использую бесплатный набор Rltile, в котором тысячи хороших плиток.Я буду использовать Pubnub или Google App Engine для поддержки многопользовательской игры.