什么是用于存储RPG游戏物品的优秀Java数据结构?

我正在用 Java构建一个RPG地下城游戏,我一直在创建一个数据结构.

我有很多东西,我可以复制以填充地牢.例如,有一个面包Thing对象,一个剑Thing对象,一个连锁邮件Thing对象,以及怪物Thing(s)等.我想将它们存储在一个中央库中,然后能够使用某些东西检索一个对象查询.我想使用以下字段存储它们:

int minLevel
int maxLevel
double probability
int[] types

因此生锈的剑的minLevel为1,maxLevel为3,稀有概率(3%),[type.SWORD,type.WEAPON,type.ITEM,TYPE.EQUIP].一把更好的剑会有minLevel 2,maxLevel 10,稀有度(1%).

然后我想从图书馆中检索一个随机类型.WORD,并说我在3级.我应该根据他们的概率获得一把生锈的剑,而不是更好的剑.如果我从请求等级10的库中检索到一个type.SWORD,我只会找回更好的剑.

我希望这是有道理的.

编辑
在初始化阶段,将创建所有基本对象.像可用的武器,盔甲,食物,药水,魔杖,所有基本可能的东西,在游戏中有独特的图形瓷砖.然后,当我想在某个地方放置一个物体时,我只是制作一个可用物品的副本,稍微调整一下它的数据,然后把它放在世界上.实际的项目都是根Thing类的子类,例如类Creature,Item,Equip(扩展Item),Weapon(扩展装备),Armor(扩展装备),Food(扩展Item)等等.但我想要标记它们在Library数据库中有所不同,我想使用额外的标签,比如type.RARE,type.ARTIFACT,type.CURSED,所以除了类之外我还想要额外的标签.

该游戏使用LIBGDX在Android和Applet上可用.我使用免费的Rltile套装,它有数以千计的好瓷砖.我将使用Pubnub或Google App Engine来提供多人游戏支持.

我能想到三个答案:

>编写自己的库,使用自定义方法在Maps中存储这些内容.
所以你可能有一个Map< Type,List< Object>>按类型存储事物列表
然后是一个获取类型的方法,从地图中检索列表并选择
概率的东西(这很容易做到 – 你只是提高了概率,
生成0和总和之间的随机数,然后遍历列表,
从随机值中减去项目的概率,直到它为负数 – 你
返回使其为负[*]的项目.您也可以先过滤列表
等级,例如.

如果你真的混合了不同的东西,并且不希望以类型为基础,
然后另一个选项(更慢,但更灵活)是将所有内容放在列表中
然后根据您的需要进行过滤.一个很好的方法是用番石榴 – 看
Iterables.filter和谓词在07​​000.
你可以提供一个接受谓词并返回随机的接口
从过滤后留下的任何东西中选择.谓词很容易构建
使用匿名类“内联” – 请参阅示例
 https://code.google.com/p/guava-libraries/wiki/FunctionalExplained#Functions_and_Predicates
>将所有这些都粘在一个数据库中.也许我太过于企业化,而人们会玩游戏
从来没有这样做,但在我看来,像sqlite或者一样的小型嵌入式数据库
H2对此非常完美.然后,您可以选择SQL查询(这个
已经是一个很长的答案,所以我不会在这里提供更多细节).
>改变你的设计.你所描述的并不是很好.而不是有类型,
你的东西可以实现接口.所以武器界面会有一个
例如,getMinLevel()方法.然后,使用这样的设计,使用a
数据库与ORM(休眠).

你正在做的事情有点雄心勃勃,我怀疑更多的是学习而不是其他任何东西(没有批评意图 – 这就是我学习东西的方式,通过制作东西,所以只是假设你像我一样).所以选择你觉得最舒服的.

[*]这假设你总是想要归还一些东西.如果概率已标准化并且您希望无法返回任何内容,请从0-1(或0-100,如果使用百分比)中选择初始值.并且,如果在列表中运行时没有任何值变为负值,则不返回任何内容.

相关文章
相关标签/搜索