public Bouncer() {
        JFrame frame = new JFrame("Bouncer");
        JPanel panel = new JPanel(){
            @Override
            public void paintComponent(Graphics g){
                updatePos();
                g.setColor(Color.BLACK);
                g.fillRect(0, 0, 2000, 2000);
                
                for(int i = 0; i < flames.size(); i++){
                    Flame c = flames.get(i);
                    c.update();
                    g.setColor(c.color);
                    g.fillArc((int) c.x - flameRadius, (int) c.y - flameRadius, flameRadius*2, flameRadius*2, 0, 360);
                }
                
                g.setColor(Color.GRAY);
                int rectsize = 10;
                g.fillRect((int) x + ballRadius - rectsize/2, (int) y - rectsize/2, rectsize, rectsize);
                g.fillRect((int) x + ballRadius - rectsize/2, (int) y - rectsize/2 + ballRadius*2, rectsize, rectsize);
                g.fillRect((int) x - rectsize/2, (int) y - rectsize/2 + ballRadius, rectsize, rectsize);
                g.fillRect((int) x - rectsize/2 + 2*ballRadius, (int) y - rectsize/2 + ballRadius, rectsize, rectsize);
                
                if(ballColour != null) g.setColor(ballColour);
                else g.setColor(Color.RED);
                g.fillArc((int) x, (int) y, ballRadius * 2, ballRadius * 2, 0, 360);
                
                g.setColor(Color.GRAY);
                for(int i = 0; i < bombs.size(); i++){
                    Bomb bomb = bombs.get(i);
                    if(!bomb.visible)
                        continue;
                    bomb.updateLocation();
                    g.fillArc((int) bomb.location.x() - bombRadius, (int) bomb.location.y() - bombRadius, bombRadius * 2, bombRadius * 2, 0, 360);
                }
            }
        };
        frame.setLayout(new GridLayout(1, 1, 0, 0));
        frame.add(panel);
        frame.setSize(Toolkit.getDefaultToolkit().getScreenSize());
        frame.setUndecorated(true);
        frame.addKeyListener(this);
        frame.addMouseListener(this);
        frame.addMouseMotionListener(this);
        frame.setVisible(true);
        
        new Timer(this, 5000).start();
        
        while(true){
            try{
                Thread.sleep(20);
                panel.repaint();
                frame.repaint();
            }
            catch(Exception e){
                e.printStackTrace();
            }
        }
        
    }