import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.geom.*; public class GamePanel extends JPanel implements Runnable { private Game game; public GamePanel() { game = new Game(); new Thread(this).start(); } public void update() { game.update(); repaint(); } protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2D = (Graphics2D) g; for (Render r : game.getRenders()) if (r.transform != null) g2D.drawImage(r.image, r.transform, null); else g.drawImage(r.image, r.x, r.y, null); g2D.setColor(Color.BLACK); if (!game.started) { g2D.setFont(new Font("TimesRoman", Font.PLAIN, 20)); g2D.drawString("Press SPACE to start", 150, 240); } else { g2D.setFont(new Font("TimesRoman", Font.PLAIN, 24)); g2D.drawString(Integer.toString(game.score), 10, 465); } if (game.gameover) { g2D.setFont(new Font("TimesRoman", Font.PLAIN, 20)); g2D.drawString("Press R to restart", 150, 240); } } public void run() { try { while (true) { update(); Thread.sleep(25); } } catch (Exception e) { e.printStackTrace(); } } }