gpt4 book ai didi

java - 多类型自定义数组列表

转载 作者:行者123 更新时间:2023-12-04 21:56:22 24 4
gpt4 key购买 nike

我目前正在尝试制作一款简单的 RPG 类游戏。我希望怪物在 map 上随机生成。我设置了它,以便当我想要一个产卵时它被添加到 ArrayList称为 monsters .我会有很多不同类型的 monsters到我完成时,每个类都有自己的类(例如 Zombie、Ghost...),每个类都有一种绘制怪物的方法,称为 draw。我想知道如何做到这一点。

Monsters是一个 ArrayList<Object>所以它将能够在其中包含不同的类,但它不会让我做 Monsters.get(i).draw() ;这真的可能吗,还是我太蠢了。

最佳答案

您未能转换对象 ArrayList<Object>回到怪物

// Monster.get(i)            == Object
// (Monster) Monsters.get(i) == Monster

// cast the list item i from Object to Monster
((Monster) Monsters.get(i)).draw();

更好的解决方案:

interface Monster {
void draw();
}

// implement draw on each
class Zombie implements Monster {}
class Ghost implements Monster {}

ArrayList<Monster> monsters = new ArrayList<>();
// legal
monsters.add(new Zombie());
monsters.add(new Ghost());

// legal
monsters.get(i).draw();

您可以使用类 -> 扩展解决方案或此接口(interface) -> 实现。无论哪种方式,这都是一个非常简单的例子,说明了更好的方式来实现你的怪物。

关于java - 多类型自定义数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31363297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com