@Override protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.drawImage(background, 0, 0, null); g2d.setColor(Color.WHITE); for (Ship ship : facade.getShips(world)) { if (!visualizations.containsKey(ship)) { visualizations.put(ship, new ShipVisualization(Color.BLUE, ship, null)); } visualizations.get(ship).draw(g2d); } for (Asteroid asteroid : facade.getAsteroids(world)) { if (!visualizations.containsKey(asteroid)) { visualizations.put(asteroid, new AsteroidVisualization(asteroid)); } visualizations.get(asteroid).draw(g2d); } for (Bullet bullet : facade.getBullets(world)) { if (!visualizations.containsKey(bullet)) { Ship ship = facade.getBulletSource(bullet); visualizations.put( bullet, new BulletVisualization(visualizations.get(ship).getColor(), bullet)); } visualizations.get(bullet).draw(g2d); } for (Explosion explosion : explosions) { explosion.draw(g2d); } if (msg != null) { g2d.setColor(Color.WHITE); g2d.setFont(g2d.getFont().deriveFont(40f)); drawCenteredString(g2d, msg); g2d.setFont(g2d.getFont().deriveFont(20f)); drawCenteredString(g2d, "Press ESC to continue ...", getHeight() / 3 * 2); } }