java - 安卓游戏角色扮演库存系统

标签 java android arraylist

我正在使用 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/

相关文章:

java - 将 gridLayout 添加到已实现 FlowLayout 的 JLabel 上

java - 设置环境变量以从 java 配置数据存储凭据

android - Activity excludeFromRecents 不适用于 Android 5.0

java - 从数组列表中删除字符串

java - 在 neo4j java 驱动程序中获取节点的属性

java - JSF : <f:selectItems value ="#{Bean.method([abc])}"/>

android - 这个小部件/元素在 Android 中叫什么?

java - Pubnub V4 迁移回调

java - 仅将数字字符串放入 hashmap

java - 多个图像到一个字节数组?字节数组的数组?