我的java游戏中有一个对象,它将成为一个硬币,目前只是一个用
制作的矩形g.setColor(Color.yellow);
g.fillRect(x, y, 16, 16);
我设置了碰撞设置,以便在玩家触摸时为玩家提供点数,并且工作正常,但如何在触摸后将其删除?因为这是积分不断上升。
我唯一能想到的就是重新着色它以使它看起来不像那里,但那远非同一件事。
答案 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
个对象来处理多个对象。这样,您可以轻松add
或remove
使用ArrayList
函数add()
和remove()
。有关实际删除对象的更多具体信息,请参阅此post。有关处理游戏中对象的信息,请参阅此post。
答案 2 :(得分:0)
如果您创建了一个对象,则可以使其等于null。
rectObj = null;
如果您只是在没有制作实际物体的情况下执行了fillRect()方法,则可以将其从面板上移开,或者只是将其着色为白色。但是,我希望你确实使用了一个对象,因为它会更简单有效。