【问题标题】:How To move Items Between ArrayLists? Java如何在 ArrayLists 之间移动项目?爪哇
【发布时间】:2015-01-19 13:40:02
【问题描述】:

我正在制作一款游戏,一款 rpg(是的,又是另一个尝试制作其中一个的家伙),我已经设法制作了大部分游戏,除了库存以及它与世界其他地方的行为方式,现在我想要以逻辑方式在列表之间移动项目,例如我杀死了一个怪物,怪物掉落了一个西红柿,Tomato() 将在 ArrayList worldInventory 中创建,并在 x,y 处绘制,如果玩家走过西红柿,那个番茄应该移到ArrayList Inventory中,如果玩家想装备番茄,番茄应该移到ArrayList中装备。

所以为了让事情更容易理解,我有 3 个列表:

 ArrayList<Item> worldInventory
 ArrayList<Item> Inventory
 ArrayList<Item> equipped.

我想在它们之间移动Tomato() 的副本,并且如果Tomato() 在列表中的值发生更改并且它被移动了,我希望Tomato() 保留其值。

;D 我会给帮助我的人一个大尺寸的互联网巧克力饼干,非常感谢。谢谢n.n

【问题讨论】:

    标签: java arraylist


    【解决方案1】:

    物品掉落时:

    Tomato tomato = new Tomato();
    worldInventory.add(tomato);
    

    取货时:

    worldInventory.remove(tomato);
    inventory.add(tomato);
    

    装备上:

    inventory.remove(tomato);
    equipped.add(tomato);
    

    只是想知道为什么需要配备 ArrayList ?

    你可以在你的 WorldObject (boolean equipped = false) 里面有一个布尔标志 并在装备装备时将其设置为 true。

    【讨论】:

    • 感谢 Funtik 的帮助,非常感谢,关于您的问题,我正在考虑将东西分开,并且我做了一个布尔值,称为装备,如果玩家选择装备和然后将对象添加到装备列表中,猜想我是新手,这听起来更容易做到,但我做了一个 for 循环检查装备列表并向播放器添加值,但它使用装备的数组列表索引它们并应用奖金。
    • 猜猜我可以交换 for 循环以使用库存列表并搜索装备物品,然后应用布尔装备设置为 true 的物品的奖励。
    • 来一盘巧克力饼干 :) (Y)
    • 谢谢,我就是喜欢那种网络饼干的味道。顺便说一句,你的游戏有链接吗?我很想看一些截图/alpha 游戏
    • :D 很快我就会有链接,只是想完成制作系统,然后制作一些手工制作的关卡+绘制动画 xD,之后我将建立一个下载的网站游戏的选项,它将是免费的:),一旦它启动,我会给你一个链接!谢谢你这么问,真的让我想更快地完成游戏!
    【解决方案2】:

    你可以这样做:

    public static void main(String[] args) {
        ArrayList<String> test = new ArrayList<String>();
        ArrayList<String> test1 = new ArrayList<String>();
        test.add("test");
        test1.add(test.get(0));
        test.remove(0);
        System.out.println("" + test.size());
        System.out.println("" + test1.get(0));
    }
    

    您可以将其添加到一个数组列表中并从另一个数组列表中删除。

    【讨论】:

    • 感谢您的回复,吃巧克力饼干吧!
    【解决方案3】:

    如果将对象添加到列表中,它将保留其所有字段值。只是:

    Tomato yourTomatoObject = otherList.remove(index);
    inventory.add(yourTomatoObject);
    

    【讨论】:

    • 感谢重要的一点“如果将对象添加到列表中,它将保留其所有字段值。”,现在我想知道,如果我从列表中删除对象然后添加它到另一个,仍然会保持它的价值?
    • remove 方法返回删除的对象,所以是的,它会的。查看修改
    猜你喜欢
    • 2017-05-21
    • 1970-01-01
    • 2010-10-14
    • 2018-04-04
    • 1970-01-01
    • 2021-09-14
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多