java - 突破游戏(当我出局时,我希望球再次击中剩余的砖 block )

标签 java paint breakout

我是 Java 编程新手。我正在学习开发一款类似于“突破”的游戏。这是它的工作原理

you have a set of bricks to hit using a ball and the paddle

我陷入了困境,

每当我错过球时,它就会带我到 else 循环,在那里我发送“游戏结束”消息。 相反,我希望球再次返回,并击中其他剩余的砖 block 。

这是片段 Java代码:

public void paint(Graphics g) {
       super.paint(g);

       if (ingame) {
           g.drawImage(ball.getImage(), ball.getX(), ball.getY(),
                       ball.getWidth(), ball.getHeight(), this);
           g.drawImage(paddle.getImage(), paddle.getX(), paddle.getY(),
                       paddle.getWidth(), paddle.getHeight(), this);

           for (int i = 0; i < 30; i++) {
               if (!bricks[i].isDestroyed())
                   g.drawImage(bricks[i].getImage(), bricks[i].getX(),
                               bricks[i].getY(), bricks[i].getWidth(),
                               bricks[i].getHeight(), this);
           }
       } else {

           Font font = new Font("Verdana", Font.BOLD, 18);
           FontMetrics metr = this.getFontMetrics(font);

           g.setColor(Color.BLACK);
           g.setFont(font);
           g.drawString(message,
                        (Commons.WIDTH - metr.stringWidth(message)) / 2,
                        Commons.WIDTH / 2);
       }


       Toolkit.getDefaultToolkit().sync();
       g.dispose();
   }

提前致谢:)

最佳答案

1)使用paintComponent()

2) 不要破坏作为参数传递的 Graphics

3) 代码应等于起始代码;将球移动到比赛 field 内并重新开始。

关于java - 突破游戏(当我出局时,我希望球再次击中剩余的砖 block ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7619898/

相关文章:

java - 使用 equals 获取 NullPointerException

Java随机颜色 block

java - 过于复杂的目录迭代结构破坏了程序的连续性和可理解性

java - 计算 jar 文件的代码指标

java - BufferedImage 不从 0,0 处绘制

java - Sprite 在特定的 JPanel 上生成

java - 我想找到 .class 文件的版本

java - 如何在网络服务器外上传文件?

java - JPanel 内自由绘图

java - 说左侧必须解析为变量?