我正在用java编写一个名为pong的游戏,我相信每个人都知道游戏是什么。我觉得这一切都运转良好,但是现在我想把球打到最顶端,我已经设置了。我正在寻找的是当球与挡块接触时,我希望挡块消失,但我不确定该怎么做
g.setColor(Color.blue);
g.fillRect(block1X, 250, 150, 15);
上面的代码是块
if(ballX >= block1X && ballX <= block1X + 150 && ballY >= 240)
ballYSpeed = -7;
else if(ballX <= block1X && ballX <= block1X + 150 && ballY <= 270)
ballYSpeed = 7;
上面的代码是if和else if当球从块上方和块下方接触时。任何建议都会很棒。
答案 0 :(得分:0)
在这种情况下,一种快速方法(远不是最好的方法)可以用布尔值跟踪块的状态。
初始化它是真的
boolean isAlive = true;
你的绘图应该依赖于此:
if(isAlive){
//drawing block here
}
在碰撞时设置isAlive
为假,它不再被绘制。
然而,这是一个糟糕的解决方案,你应该在你的某种Game类中创建一个Block
类和一个List或一个Block数组,用块填充你的列表,通过遍历所有这些来更新/渲染它们。
这可能是一个非常简单的Block类
public class Block{
private int x;
private int y;
public Block(int x, int y){
this.x = x;
this.y = y;
}
//This is how you draw it
public void draw(){
}
//If needed for example a moving block
public void update(){
}
}
在您发生游戏的类中,您可以定义一个ArrayList并使用块填充。
ArrayLis<Block> blocks = new ArrayList<Block>();
在游戏循环中,你可以画出:
for(Block block: blocks){
block.draw();
}
最后要么你可以定义块是否存在的布尔值,或者只是从列表中删除特定的块。请注意,要测试碰撞,您必须循环遍历块并逐个测试它们。