在Java中的乒乓游戏

时间:2016-11-30 05:15:35

标签: java

我正在用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当球从块上方和块下方接触时。任何建议都会很棒。

1 个答案:

答案 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();
}

最后要么你可以定义块是否存在的布尔值,或者只是从列表中删除特定的块。请注意,要测试碰撞,您必须循环遍历块并逐个测试它们。