// Definindo os pinos dos LEDs
#define LED1 2
#define LED2 4
#define LED3 13

// Definindo os pinos dos botões
#define BUTTON1 27
#define BUTTON2 32
#define BUTTON3 33

bool gameStarted = false;
long startTime;

// Contadores de placar para os jogadores
int scorePlayer1 = 0;
int scorePlayer2 = 0;

void setup() {
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);

  pinMode(BUTTON1, INPUT_PULLUP);
  pinMode(BUTTON2, INPUT_PULLUP);
  pinMode(BUTTON3, INPUT_PULLUP);

  Serial.begin(115200);
}

void blinkLed(int ledPin) {
  for (int i = 0; i < 3; i++)  {
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(500);
    digitalWrite(ledPin, HIGH);
  }
}

void lightLed(int ledPin, long startTime) {
  digitalWrite(ledPin, HIGH);
  Serial.println(millis() - startTime);
}

void printScore() {
  Serial.print("Placar - Jogador 1: ");
  Serial.print(scorePlayer1);
  Serial.print(", Jogador 2: ");
  Serial.println(scorePlayer2);
}

void loop() {

  if (digitalRead(BUTTON1) == LOW)
  {
    blinkLed(LED1);
    gameStarted = true;
    startTime = millis();
    digitalWrite(LED2, LOW);
    digitalWrite(LED3, LOW);
  }

  if (gameStarted)
  {
    if (digitalRead(BUTTON2) == LOW)
    {
      lightLed(LED2, startTime);
      gameStarted = false;
      scorePlayer1++; // Incrementa o placar do jogador 1
      printScore(); // Imprime o placar atual
    }

    if (digitalRead(BUTTON3) == LOW)
    {
      lightLed(LED3, startTime);
      gameStarted = false;
      scorePlayer2++; // Incrementa o placar do jogador 2
      printScore(); // Imprime o placar atual
    }
  }
}
$abcdeabcde151015202530354045505560fghijfghij