Help!! building a Copy Cat light display

I'm working on a project to help me learn how to use arduino. My project is 'supposed to' remember when I push a button, how long said button is pushed, and the length between button presses; then it is supposed to replay the eight button push sequence.

summarized... it doesn't work.
could someone please explain to me what's wrong with my code:

int ledPin = 13;
int buttonPin = 2;
int buttonState = 0;
int Presses[] = {0, 0, 0, 0, 0, 0, 0, 0};
int Delays[] = {0, 0, 0, 0, 0, 0, 0, 0};

void setup(){
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT);
  Serial.begin(9600);
}

void loop(){
  buttonState = digitalRead(buttonPin);
  if(buttonState == HIGH){  
    for(; buttonState == LOW; Presses[1]++){
      delay(1);
    }
    Serial.println(Presses[1]);
    for(; buttonState == HIGH; Delays[1]++){
      delay(1);
    }
    for(; buttonState == LOW; Presses[2]++){
      delay(1);
    }
    for(; buttonState == HIGH; Delays[2]++){
      delay(1);
    }
    for(; buttonState == LOW; Presses[3]++){
      delay(1);
    }
    for(; buttonState == HIGH; Delays[3]++){
      delay(1);
    }
    for(; buttonState == LOW; Presses[4]++){
      delay(1);
    }
    for(; buttonState == HIGH; Delays[4]++){
      delay(1);
    }
    for(; buttonState == LOW; Presses[5]++){
      delay(1);
    }
    for(; buttonState == HIGH; Delays[5]++){
      delay(1);
    }
    for(; buttonState == LOW; Presses[6]++){
      delay(1);
    }
    for(; buttonState == HIGH; Delays[6]++){
      delay(1);
    }
    for(; buttonState == LOW; Presses[7]++){
      delay(1);
    }
    for(; buttonState == HIGH; Delays[7]++){
      delay(1);
    }
    for(;buttonState == LOW; Presses[8]++){
      delay(1);
    }
    for(; buttonState == HIGH; Delays[8]++){
      delay(1);
    }
  digitalWrite(ledPin, HIGH);
  delay(Presses[1]);
  digitalWrite(ledPin, LOW);
  delay(Delays[1]);
  digitalWrite(ledPin, HIGH);
  delay(Presses[2]);
  digitalWrite(ledPin, LOW);
  delay(Delays[2]);
  digitalWrite(ledPin, HIGH);
  delay(Presses[3]);
  digitalWrite(ledPin, LOW);
  delay(Delays[3]);
  digitalWrite(ledPin, HIGH);
  delay(Presses[4]);
  digitalWrite(ledPin, LOW);
  delay(Delays[4]);
  digitalWrite(ledPin, HIGH);
  delay(Presses[5]);
  digitalWrite(ledPin, LOW);
  delay(Delays[5]);
  digitalWrite(ledPin, HIGH);
  delay(Presses[6]);
  digitalWrite(ledPin, LOW);
  delay(Delays[6]);
  digitalWrite(ledPin, HIGH);
  delay(Presses[7]);
  digitalWrite(ledPin, LOW);
  delay(Delays[7]);
  digitalWrite(ledPin, HIGH);
  delay(Presses[8]);
  digitalWrite(ledPin, LOW);
  delay(Delays[8]);
  Presses[1, 2, 3, 4, 5, 6, 7, 8] = 0, 0, 0, 0, 0, 0, 0, 0;
  Delays[1, 2, 3, 4, 5, 6, 7, 8] = 0, 0, 0, 0, 0, 0, 0, 0;
  }
}

You're overrunning both arrays. I rewrite the code and added some comments. I haven't tested the code though.

int ledPin = 13;
int buttonPin = 2;
int buttonState = 0;
int Presses[8];
int Delays[8];

void setup(){
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT);
  Serial.begin(9600);
}

void loop(){
  buttonState = digitalRead(buttonPin);
  if(buttonState != HIGH)
    return;
    
  for(int i=0; i<8; i++)
  {
    // Where is 'buttonState' getting updated?
    for(; buttonState == LOW; Presses[i]++)
      delay(1);
    for(; buttonState == HIGH; Delays[i]++)
      delay(1);
    if (i==0)
      Serial.println(Presses[i]); // this won't print until this function 'loop' returns
  }
  
  for(int i=0; i<8; i++)
  {
    digitalWrite(ledPin, HIGH);
    delay(Presses[i]);
    digitalWrite(ledPin, LOW);
    delay(Delays[i]);
  }

  // What is the following suppose to do?
  //Presses[1, 2, 3, 4, 5, 6, 7, 8] = 0, 0, 0, 0, 0, 0, 0, 0;
  //Delays[1, 2, 3, 4, 5, 6, 7, 8] = 0, 0, 0, 0, 0, 0, 0, 0;
  }
}

My code introduced some bugs. Try the following instead.

int ledPin = 13;
int buttonPin = 2;
int Presses[] = {0, 0, 0, 0, 0, 0, 0, 0};
int Delays[] = {0, 0, 0, 0, 0, 0, 0, 0};

void setup(){
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT);
  Serial.begin(9600);
}

void loop(){
  if(digitalRead(buttonPin) != HIGH)
    return;
    
  for(int i=0; i<8; i++)
  {
    for(; digitalRead(buttonPin) == LOW; Presses[i]++)
      delay(1);
    for(; digitalRead(buttonPin) == HIGH; Delays[i]++)
      delay(1);
    if (i==0)
      Serial.println(Presses[i]); // this won't print until this function 'loop' returns
  }
  
  for(int i=0; i<8; i++)
  {
    digitalWrite(ledPin, HIGH);
    delay(Presses[i]);
    digitalWrite(ledPin, LOW);
    delay(Delays[i]);
  }

  memset(Presses, 0, sizeof(int)*8);
  memset(Delays, 0, sizeof(int)*8);
}

It worked! Thanks, now I just need to figure how it worked! Thanks