如何删除Java游戏中的对象

时间:2015-05-31 01:59:44

标签: java awt java-2d

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

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

我设置了碰撞设置,以便在玩家触摸时为玩家提供点数,并且工作正常,但如何在触摸后将其删除?因为这是积分不断上升。

我唯一能想到的就是重新着色它以使它看起来不像那里,但那远非同一件事。

3 个答案:

答案 0 :(得分:2)

你应该有一个Rectangle类,或者更确切地说是一个Coin类,例如

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()..
}

一开始,您会有ArrayList Coin之类的内容,例如

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接口。 BR />

答案 1 :(得分:1)

你真的应该在某种级别或处理程序ArrayList中拥有class个对象来处理多个对象。这样,您可以轻松addremove使用ArrayList函数add()remove()。有关实际删除对象的更多具体信息,请参阅此post。有关处理游戏中对象的信息,请参阅此post

答案 2 :(得分:0)

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

rectObj = null;

如果您只是在没有制作实际物体的情况下执行了fillRect()方法,则可以将其从面板上移开,或者只是将其着色为白色。但是,我希望你确实使用了一个对象,因为它会更简单有效。