如何根据构造函数中ID设置的对象返回某个对象?

问题描述 投票:0回答:2

我正在用Java开发游戏,目前正在实现玩家所拥有的生命。一开始它们有5个(在屏幕上显示为一只青蛙,每只青蛙= 1条生命,失去一条生命=从屏幕上移走一只青蛙)。

我创建了一个名为Life的类,该类将图像作为生命及其x和y位置。如果玩家死亡,应该将青蛙从屏幕上移开。

我设法通过创建5个新的Life对象并为其指定不同的名称(例如life1,life2等),然后在对象实例化过程中使用其给定名称将其删除来做到这一点,但这非常低效,因为我只是在链接时一起发表声明。

我曾想过为每个新青蛙在构造函数中提供一个ID,从1到5,然后有一个while循环,如果玩家死亡(这是条件),它将删除生命,而计数器从5减至1 ,但是,要使其正常工作,我将需要某种方式获取单独的Life对象,因此(使用伪代码)如下所示:

numOfLives = 5;
while (i < numOfLives)
{
  life = Life.getLifeFromID(numOfLives);
  background.removeLife(life);
  numOfLives--;
}

因此可以创建这样的方法吗? (用伪代码编写,我不太确定您将如何在实际代码中指定它)

public Life getLifeFromID(int id)
{
     return specific Life object based on ID from argument
}

因此,如果numOfLives = 4,将为行life = Life.getLifeFromID(numOfLives);分配4的生命对象,然后可以在下一行中将其删除。

谢谢!

java constructor
2个回答
0
投票

我认为您可以将Life实例放入列表中,然后在失去生命时,只需从具有特定索引的List中删除。


0
投票

我也在研究一种游戏,该游戏也使用系统根据ID来引用对象。

您可以通过给'Life'一个名为ID的变量或其他您想要调用的变量并将其添加到构造函数中来开始。

这是在游戏世界中使用实体的示例。

for (int i = 0; i < spawnLimit; i++) {
        int x = (int) (Math.random() * 200) + 10;
        int y = (int) (Math.random() * 200) + 10;
        entities.add(new Entity(x, y, this.width, this.height, world_scale, , entityCount));
        entityCount += 1;
}

然后,当您要基于ID获取对象时:

return entities.get(id);

推荐问答