I am getting a NullPointer Exception at the following line...
p1.setColor(Color.green);
Code:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.color.ColorSpace;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Main extends JPanel implements KeyListener {
    public int FRAME_WIDTH = 800, FRAME_HEIGHT = 650;
    public Image screen;
    //Player 1
    public int x = 100;
    public int y = 100;
    public int px = 117;
    public int py = 115;
    public boolean up, down, right, left;
    public Graphics p1;
    //Player 2
    public int x2 = 600;
    public int y2 = 100;
    public int px2 = 617;
    public int py2 = 115;
    public boolean up2, down2, right2, left2;
    public  Graphics p2;
    public static void main(String[] args) {
        JFrame frame = new JFrame("Game");
        Main main = new Main();
        frame.add(main);
        frame.setSize(main.FRAME_WIDTH, main.FRAME_HEIGHT);
        frame.setBackground(Color.BLACK);
        frame.setVisible(true);
        frame.setResizable(false);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        main.screen = frame.createImage(main.FRAME_WIDTH, main.FRAME_HEIGHT);
        main.p1 = main.screen.getGraphics();
        main.p2 = main.screen.getGraphics();
        while(true) {
            //Player 1
            if(main.up = true) {
                main.y+=2;
            }
            if(main.down = true) {
                main.y-=2;
            }
            if(main.right = true) {
                main.x+=2;
            }
            if(main.left = true) {
                main.x-=2;
            }
            //Player 2
            if(main.up2 = true) {
                main.y2+=2;
            }
            if(main.down2 = true) {
                main.y2-=2;
            }
            if(main.right2 = true) {
                main.x2+=2;
            }
            if(main.left2 = true) {
                main.x2-=2;
            }
            frame.repaint();
            try {
                Thread.sleep(20);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
    @Override
    public void paintComponent(Graphics g) {
        String player1 = "Player 1";
        String player2 = "Player 2";
        p1.setColor(Color.green);
        p2.setColor(Color.green);
        p1.drawString(player1, x, y);
        p2.drawString(player2, x2, y2);
        p1.setColor(Color.red);
        p2.setColor(Color.red);
        p1.fillOval(px, py, 5, 5);
        p2.fillOval(px2, py2, 5, 5);
        g.drawImage(screen, 0, 0, this);
    }
    @Override
    public void keyPressed(KeyEvent e) {
        //Player 1
        if(e.getKeyCode() == KeyEvent.VK_W) {
            up = true;
        }
        if(e.getKeyCode() == KeyEvent.VK_S) {
            down = true;
        }
        if(e.getKeyCode() == KeyEvent.VK_D) {
            right = true;
        }
        if(e.getKeyCode() == KeyEvent.VK_A) {
            left = true;
        }
        //Player 2
        if(e.getKeyCode() == KeyEvent.VK_UP) {
            up2 = true;
        }
        if(e.getKeyCode() == KeyEvent.VK_DOWN) {
            down2 = true;
        }
        if(e.getKeyCode() == KeyEvent.VK_RIGHT) {
            right2 = true;
        }
        if(e.getKeyCode() == KeyEvent.VK_LEFT) {
            left2 = true;
        }
    }
    @Override
    public void keyReleased(KeyEvent e) {
        //Player 1 - Release
        if(e.getKeyCode() == KeyEvent.VK_W) {
            up = false;
        }
        if(e.getKeyCode() == KeyEvent.VK_S) {
            down = false;
        }
        if(e.getKeyCode() == KeyEvent.VK_D) {
            right = false;
        }
        if(e.getKeyCode() == KeyEvent.VK_A) {
            left = false;
        }
        //Player 2 - Release
        if(e.getKeyCode() == KeyEvent.VK_UP) {
            up2 = false;
        }
        if(e.getKeyCode() == KeyEvent.VK_DOWN) {
            down2 = false;
        }
        if(e.getKeyCode() == KeyEvent.VK_RIGHT) {
            right2 = false;
        }
        if(e.getKeyCode() == KeyEvent.VK_LEFT) {
            left2 = false;
        }
    }
    @Override
    public void keyTyped(KeyEvent e) {
    }
}
 
     
    