I have the following Processing program:
//using Papplet instead of STDraw to visually represent my grid, created by Mahmed Ibrahim
import java.awt.Color;
import processing.core.*;
import processing.core.PApplet;
public class C4Grid extends PApplet {
    PShape s;
    PShape[][] circleSpaces;
    boolean[][] circleSpacesFilled;
    boolean[][] circleHasYelowPiece;
    boolean[][] circleHasRedPiece;
    final float SPACES_BETWEEN_ROWS = 110;
    final float SPACES_BETWEEN_COLUMNS = 130;
    public C4Grid(){}
    public void setup() {
        System.out.println("it got to here where it breaks");
        size(1000, 1000, P2D);
        // Making the shape of the grid using vertices
        // so I'm manually drawing my polygon.
        s = createShape();
        s.beginShape();
        s.fill(34, 56, 100);
        s.tint(34, 56, 100);
        s.stroke(0);
        s.strokeWeight(5);
        s.vertex(400, 400);
        s.vertex(400, -440);
        s.vertex(360, -440);
        s.vertex(360, -400);
        s.vertex(-360, -400);
        s.vertex(-360, -440);
        s.vertex(-400, -440);
        s.vertex(-400, 420);
        s.vertex(-420, 420);
        s.vertex(-420, 440);
        s.vertex(-360, 440);
        s.vertex(-360, 420);
        s.vertex(-380, 420);
        s.vertex(-380, 400);
        s.vertex(380, 400);
        s.vertex(380, 420);
        s.vertex(360, 420);
        s.vertex(360, 440);
        s.vertex(420, 440);
        s.vertex(420, 420);
        s.vertex(400, 420);
        s.vertex(400, 420);
        s.vertex(400, -440);
        s.vertex(400, 400);
        s.endShape();
        System.out.println("it got to here where it breaks");
        // using a 2D array to create a grid of circles
        // which will represent the spaces on the grid
        circleHasYelowPiece = new boolean[7][6];
        circleHasRedPiece = new boolean[7][6];
        circleSpacesFilled = new boolean[7][6];
        circleSpaces = new PShape[7][6];
        for (int row = 0; row < 7; row++) {
            for (int column = 0; column < 6; column++) {
                circleSpaces[row][column] = createShape(ELLIPSE, -380 + (row) * SPACES_BETWEEN_ROWS,
                        -370 + (column) * SPACES_BETWEEN_COLUMNS, 100, 100);
                circleSpaces[row][column].disableStyle();
                stroke(0);
                strokeWeight(5);
                circleSpacesFilled[row][column] = false;
                circleHasRedPiece[row][column] = false;
                circleHasYelowPiece[row][column] = false;
            }
        }
    }
    public void draw() {
        translate(width / 2, height / 2);
        shape(s);
        for (int row = 0; row < 7; row++) {
            for (int column = 0; column < 6; column++) {
                shape(circleSpaces[row][column]);
            }
        }
    }
    public boolean piecePlaced(int column, Color pieceColor) {
        column = column - 1; // the choice are form 1-7 but in an array its 0-6;
        boolean moveDone = false;
        int i = 5;
        Color red = new Color(255, 0, 0);
        while (i >= 0) {
            if (circleSpacesFilled[column][i] == false) {
                circleSpacesFilled[column][i] = true;
                if (pieceColor.equals(red)) {
                    circleHasRedPiece[column][i] = true;
                    circleSpaces[column][i].fill(255, 0, 0);
                    circleSpaces[column][i].tint(255, 0, 0);
                } else {
                    circleHasYelowPiece[column][i] = true;
                    circleSpaces[column][i].fill(255, 255, 0);
                    circleSpaces[column][i].tint(255, 255, 0);
                }
                return true;
            }
        }
        return false;
    }
}
When I run it, I get this NullPointerException. Notice that the exception is coming from within Processing's libraries - it's not directly caused by my own code!
The 3 lines that are suspect are:
- currentGame = new C4Game(player1Is,player2Is,player1Color,player2Color);
- theGrid = new C4Grid(); theGrid.setup();
- s= createShape();near the top of- setup()
currentGame, theGrid, and s are all non-null (I've checked countless times).
Even when I test each line in isolation, I get an error in anything that related to the PShape class. I got rid of every PShape object and it worked, but is there a way to fix it so I can use PShape as part of my code?

 
     
    
