我正在使用 ArrayList 作为我的“ list ”。 我无法找到一种方法来添加多个相同项目而不占用“库存”中的位置。例如:我在我的库存中添加了一种药水。现在我添加了另一种药水,但这次不是向库存中添加另一种药水,而是应该显示我有:药水 x 2,同时只在 ArrayList 中占据一个位置。我提出了一些解决方案,但我觉得它们都是不好的做法。我尝试的一种解决方案是向项目本身添加一个 AMOUNT 变量并递增它。帮我找到更好的解决方案?
编辑:好的,请忽略上面的内容。我已经得到了很好的答案,但令我惊讶的是几乎没有关于角色扮演游戏库存系统的教程。我做了很多谷歌搜索,但找不到任何好的示例/教程/源代码。如果有人能给我指出一些好的示例/教程/源代码(不管是什么语言,但最好是 java,甚至是 c/c++),我将不胜感激,谢谢。哦,还有关于这个主题的任何书籍。
最佳答案
解决此问题(使用标准 API)的常用方法是使用 Map<Item, Integer>
将一个项目映射到库存中此类项目的数量。
要获取某个项目的“数量”,您只需调用get
:
inventory.get(item)
添加一些东西到你做的库存
if (!inventory.containsKey(item))
inventory.put(item, 0);
inventory.put(item, inventory.get(item) + 1);
例如,您可以从库存中移除某些东西
if (!inventory.containsKey(item))
throw new InventoryException("Can't remove something you don't have");
inventory.put(item, inventory.get(item) - 1);
if (inventory.get(item) == 0)
inventory.remove(item);
如果你在很多地方这样做会变得困惑,所以我建议你将这些方法封装在一个 Inventory
中。类。
祝你好运!
关于java - 安卓游戏角色扮演库存系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6881596/