@Override
    public void paint(Graphics g) {
        Graphics2D g2 = (Graphics2D) g;
        g2.setColor(Color.white);
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        g2.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
        g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
        g2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
        try {
            g2.draw(ball);
            g2.fill(ball);
            g2.draw(player);
            g2.fill(player);
            g2.draw(ai);
            g2.fill(ai);
            Font f = new Font(FONT_NAME, Font.BOLD, height/5);
            g2.setFont(f);        //OLD WILD 8 Bit FONT :D
            int wp = (int)f.getStringBounds(""+_points, g2.getFontRenderContext()).getWidth();
            g2.drawString("" + _points, width / 2 + 30, scoreY+30);
            int wh = (int)f.getStringBounds(""+points, g2.getFontRenderContext()).getWidth();
            g2.drawString("" + points, width / 2 - wh-30, scoreY+30);
            for (int i = 0; i < height + 10; i += 10) {
                Rectangle2D.Double r = new Rectangle2D.Double(width / 2, i, 5, 5);
                g2.draw(r);
                g2.fill(r);
            }

            g2.setColor(Color.lightGray);
            f = new Font(FONT_NAME, Font.BOLD, (int)(height*0.033));
            int w = (int)f.getStringBounds("LOCAL", g2.getFontRenderContext()).getWidth();
            int h = (int)f.getStringBounds("LOCAL", g2.getFontRenderContext()).getHeight();
            g2.setFont(f);
            int[] xpos = new int[] { width / 2 + 30 + wp / 2 - w / 2,  width / 2 - 30 - wh/2-w/2};
            g2.drawString("LOCAL", networkGameType == NetworkGameType.MASTER? xpos[1] : xpos[0], 2*h);
            w = (int)f.getStringBounds("REMOTO", g2.getFontRenderContext()).getWidth();
            g2.drawString("REMOTO", networkGameType == NetworkGameType.MASTER? xpos[0] : xpos[1], 2*h);

        } catch (NullPointerException exc) {

        }
        g2.dispose();
    }