LCD or code not working

#include <LiquidCrystal.h>
int i,c;
LiquidCrystal lcd(3,4,5,6,7,8,9,10,11,12,13);
byte du[]={0,31,0,0,0,0,0,0};
 byte du1[]={31,24,24,0,0,0,0,0};
byte* g1[32]={NULL,NULL,NULL,du,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
              NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL};
void setup() {
 Serial.begin(9600);
  lcd.begin(16, 2);  
  lcd.begin(16, 2);
  lcd.createChar(1, du1);

 lcd.write(65);
}

void loop() {
  
  //for(i=0,c=1;i<32;i++)
    if(g1[i]!=NULL)
    {
      lcd.createChar(c,g1[i]);
      c++; 
      lcd.setCursor(i%16,i/16);
      lcd.write((byte)c);
      Serial.println(i);
    }
  
    
  
  
  
  
  }

So I was just starting out with making a small game on an lcd as a task. But I've already hit a wall, the LCD refusing to display any characters suddenly. It was displaying normal characters just fine for a while, before I initialized my arrays.
Please help, I only have 1 day before my task submission.
The circuit diag is attached below

    if(g1[i]!=NULL) g1[0] is equal to NULL

// include the library code:
#include <LiquidCrystal.h>

// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
LiquidCrystal lcd(3,4,5,6,7,8,9,10,11,12,13);
int i,c;
 byte du[]={0,31,0,0,0,0,0,0}; 
 byte du1[]={31,24,24,0,0,0,0,0};
 byte* g1[32]={NULL,NULL,NULL,du,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}; 


void setup() {
  Serial.begin(9600);
  lcd.createChar(0, du);
  lcd.begin(16, 2);  
  lcd.write(byte(0));
  lcd.write(65);
}

void loop() {
  lcd.setCursor(3,0);
  //lcd.createChar(0, du1);             //This line here
  lcd.write(byte(0));
  }

What I meant to ask was, if I uncomment the part in the loop in above code, why does the du1 character not get printed? The du character gets printed if the line is commented though. Is there a rule about having the custom character be initialized only once and not change values?
Or is it a rule about only creating characters in the setup itself?
I have a project of creating a pong game on an lcd matrix (sounds insane, I know), but I'll have to continuously switch custom characters for it to work. Right now, switching even one character out in the loop is causing me trouble. Please help.