const int buttonPin = A1;
const int ledPins[] = {1, 2, 3, 4, 5, 6};
const int numLeds = 6;

void setup() {
  for (int i = 0; i < numLeds; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
  pinMode(buttonPin, INPUT_PULLUP);
  randomSeed(analogRead(0));  // Seed random
}

void loop() {
  if (digitalRead(buttonPin) == LOW) {
    // Random blinking animation for 3 seconds
    unsigned long startTime = millis();
    while (millis() - startTime < 3000) {
      int r = random(0, numLeds);
      digitalWrite(ledPins[r], HIGH);
      delay(50);
      digitalWrite(ledPins[r], LOW);
    }

    // Pick and show random number between 1 and 6
    int diceRoll = random(1, 7);  // 1 to 6
    clearLeds();
    showRandomLeds(diceRoll);

    delay(4000);  // Hold result for 4 seconds
    clearLeds();
  }
}

void clearLeds() {
  for (int i = 0; i < numLeds; i++) {
    digitalWrite(ledPins[i], LOW);
  }
}

void showRandomLeds(int count) {
  int selected[6] = {0};
  int lit = 0;

  while (lit < count) {
    int r = random(0, numLeds);
    if (selected[r] == 0) {
      digitalWrite(ledPins[r], HIGH);
      selected[r] = 1;
      lit++;
    }
  }
}