// Пины для светодиодов
const int redLED = 13;
const int greenLED = 10;
const int blueLED = 12;
const int yellowLED = 11;
// Пины для кнопок
const int redButton = 2;
const int greenButton = 3;
const int blueButton = 4;
const int yellowButton = 5;
// Массивы для хранения последовательностей
int gameSequence[100];
int inputSequence[100];
int level = 0;
void setup() {
// Инициализация пинов для светодиодов
pinMode(redLED, OUTPUT);
pinMode(greenLED, OUTPUT);
pinMode(blueLED, OUTPUT);
pinMode(yellowLED, OUTPUT);
// Инициализация пинов для кнопок
pinMode(redButton, INPUT);
pinMode(greenButton, INPUT);
pinMode(blueButton, INPUT);
pinMode(yellowButton, INPUT);
// Запуск последовательности
randomSeed(analogRead(0)); // Генерация случайных чисел на основе шума аналогового пина
Serial.begin(9600); // Запуск последовательности через монитор порта
}
void loop() {
playSequence(); // Воспроизвести текущую последовательность
getPlayerInput(); // Получить ввод от игрока
if (checkPlayerInput()) { // Проверить ввод
level++; // Увеличить уровень
} else {
gameOver(); // Игра окончена
}
}
void playSequence() {
for (int i = 0; i < level; i++) {
int led = gameSequence[i];
lightLED(led);
delay(500);
turnOffLEDs();
delay(250);
}
delay(500);
// Добавить новый элемент к последовательности
gameSequence[level] = random(6, 10); // Случайное значение 6-9
}
void getPlayerInput() {
for (int i = 0; i <= level; i++) {
int buttonPressed = 0;
while (buttonPressed == 0) {
if (digitalRead(redButton) == HIGH) {
buttonPressed = 6;
} else if (digitalRead(greenButton) == HIGH) {
buttonPressed = 7;
} else if (digitalRead(blueButton) == HIGH) {
buttonPressed = 8;
} else if (digitalRead(yellowButton) == HIGH) {
buttonPressed = 9;
}
}
inputSequence[i] = buttonPressed;
lightLED(buttonPressed);
delay(500);
turnOffLEDs();
delay(250);
}
}
bool checkPlayerInput() {
for (int i = 0; i <= level; i++) {
if (gameSequence[i] != inputSequence[i]) {
return false;
}
}
return true;
}
void lightLED(int ledPin) {
digitalWrite(ledPin, HIGH);
}
void turnOffLEDs() {
digitalWrite(redLED, LOW);
digitalWrite(greenLED, LOW);
digitalWrite(blueLED, LOW);
digitalWrite(yellowLED, LOW);
}
void gameOver() {
for (int i = 0; i < 3; i++) {
lightLED(redLED);
lightLED(greenLED);
lightLED(blueLED);
lightLED(yellowLED);
delay(500);
turnOffLEDs();
delay(500);
}
level = 0; // Сброс уровня
Serial.println("Game Over!");
}