invece di fare UP con una NullPointerException (che significa debuggate voi per capire dove è l'errore), inizia a vedere dove si presenta e ricostruisci il ciclo di esecuzione, dall'avvio del programma a dove si presenta. NPE significa che non hai istanziato qualcosa, ergo controlla che tutto sia valorizzato (e i punti in cui lo fai) quando arrivi al toString()

Mi parli del metodo toString() che è questo

Codice PHP:
public static String toString(Cella[][] m){
        
StringBuilder sb = new StringBuilder(500);
        for(
int i 09i++){
            
sb.append("|  ");
            for(
int j 09j++){
                if(
== m[0].length 1){
                    
sb.append(m[i][j].toString());
                    
sb.append("  |");
                    if(
== || == 5)
                        
sb.append("\n------------------+-----------------+------------------\n");
                    else if(
!= 8)
                        
sb.append("\n|                 |                 |                 |\n");
                }else{
                    
sb.append(m[i][j].toString());
                    
sb.append("  |  ");
                }
            }
        }
        return 
sb.toString();
    } 
e non dici il punto in cui si trova l'eccezione.

Ho la vaga impressione (non ho letto il tuo codice, per capire cosa succede dovrei debuggarlo) che quando hai delle caselle, dimentichi di assegnare il valore a queste.
Controlla questo.