如何删除 Java 游戏中的对象

How do I delete objects in a Java game

我的 java 游戏中有一个对象,它是一枚硬币,目前它只是一个用

制作的矩形
g.setColor(Color.yellow);
g.fillRect(x, y, 16, 16);

我设置了碰撞,让玩家在触摸它时获得分数,效果很好,但我如何让它在触摸后自行删除?因为它的点数一直在上升。

我唯一能想到的就是重新给它上色,让它看起来好像不存在,但那完全不是一回事。

如果您创建了一个对象,您可以使它等于 null。

rectObj = null;

如果您只是执行了一个 fillRect() 方法而没有创建实际对象,您可以将其移出面板或简单地将其涂成白色。但是,我希望您确实使用了一个对象,因为它会更简单、更有效。

您确实应该在某种级别或处理程序 class 中拥有 ArrayList 个对象来处理多个对象。这样你就可以很容易地 addremove 它们,因为你需要使用 ArrayList 函数 add()remove()。有关实际删除对象的更多具体信息,请参阅此 . And for information on handling objects in a game see this

您应该有一个 Rectangle class,或者 Coin class,例如

public class Coin {
    int xPos;
    int yPos;
    int width;
    int height;

    // For giving player points
    int points;

    // Constructors, etc
    // e.g. public int getXPos(), public int getYPos()..
}

一开始,您会得到类似于 CoinArrayList,例如

ArrayList<Coin> coins = new ArrayList<Coin>();

在你的画法中,

for (Coin c : coins) {
    g.fillOval(c.getXPos(), c.getYPos(), c.getWidth(), c.getHeight());
}

当玩家与 Coin 碰撞时,您只需将其从 ArrayList 中移除。

为了使其更具可扩展性,您甚至可以定义一个接口 Collectible,并使所有可收集的游戏内对象(例如 Coin 在这种情况下实现 Collectible 接口.