#define R 3
#define G 6
#define B 5
#define buttonA 2 // кнопка первого игрока
boolean buttonA_state;
boolean flagA = false;
#define buttonC 7 // кнопка второго игрока
boolean buttonC_state;
boolean flagC = false;
int A = 0; // счетчик кликов первого игрока
int C = 0; // счетчик кликов второго игрока
void setup() {
pinMode(R, OUTPUT);
pinMode(G, OUTPUT);
pinMode(B, OUTPUT);
pinMode(buttonA, INPUT);
pinMode(buttonC, INPUT);
Serial.begin(9600);
for(int i = 0; i<10; i++){ // индикация начала игры
digitalWrite(G, HIGH);
delay(100);
digitalWrite(G, LOW);
delay(100);
}
}
void loop() {
buttonA_state = digitalRead(buttonA);
buttonC_state = digitalRead(buttonC);
if (buttonA_state == true && flagA == false) {
flagA = true;
Serial.println("первый игрок нажал кнопку");
delay(50);
}
if (buttonC_state == true && flagC == false) {
flagC = true;
Serial.println("второй игрок нажал кнопку");
delay(50);
}
if (buttonA_state == false && flagA == true) {
flagA = false;
Serial.println("первый игрок отпустил кнопку");
delay(50);
A++;
Serial.println(A);
}
if (buttonC_state == false && flagC == true) {
flagC = false;
Serial.println("второй игрок отпустил кнопку");
delay(50);
C++;
Serial.println(C);
}
if (A == 50 || C == 50) { // выигрывает тот, кто быстрее наберет 50 кликов
if (A == 50) { // если это будет первый игрок,
digitalWrite(R, HIGH); // светодиод загорится красным
delay(3000); // на 3 секунды
digitalWrite(R, LOW);
}
if (C == 50) { // если это будет первый игрок,
digitalWrite(B, HIGH); // светодиод загорится синим
delay(3000); // на 3 секунды
digitalWrite(B, LOW);
}
A = 0; // раунд окончен, счетчики кликов обнуляются
C = 0;
for(int i = 0; i<10; i++){ // индикация начала следующего раунда
digitalWrite(G, HIGH);
delay(100);
digitalWrite(G, LOW);
delay(100);
}
}
}