我正在用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的生命对象,然后可以在下一行中将其删除。
谢谢!
我认为您可以将Life实例放入列表中,然后在失去生命时,只需从具有特定索引的List中删除。
我也在研究一种游戏,该游戏也使用系统根据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);