Переменные и чтение шаблонов

#javascript

#javascript

Вопрос:

Я только начал кодировать несколько недель назад, и проект, над которым я работаю, является в некотором роде копией игры «Simon» (в которой светодиоды будут загораться по определенному шаблону, и шаблон нужно будет вводить обратно в игру с помощью кнопок)

Я добавил переменные для каждой кнопки, чтобы получить правильную часть кода с шаблоном, но, похоже, это не работает. Это как-то связано с этим или совсем другая проблема?

 int ledPins[] = {10,11,12,13,6,7};
const int buttonPin1 = 2;
const int buttonPin2 = 3;
const int buttonPin3 = 4;
const int buttonPin4 = 5;
int digitalVal1 = digitalRead(buttonPin1);
int digitalVal2 = digitalRead(buttonPin2);
int digitalVal3 = digitalRead(buttonPin3);
int digitalVal4 = digitalRead(buttonPin4);
int b1on = false;
int b2on = false;
int b3on = false;
int b4on = false;
int bcount = 0;
int delayTime = 200;
void firstpattern() {
  int delayTime = 200;

  digitalWrite(ledPins[1], HIGH);
  delay(delayTime);

  digitalWrite(ledPins[1], LOW);
  delay(delayTime);

  digitalWrite(ledPins[3], HIGH);
  delay(delayTime);

  digitalWrite(ledPins[3], LOW);
  delay(delayTime);

  digitalWrite(ledPins[2], HIGH);
  delay(delayTime);

  digitalWrite(ledPins[2], LOW);
  delay(delayTime);

  digitalWrite(ledPins[0], HIGH);
  delay(delayTime);

  digitalWrite(ledPins[0], LOW);
  delay(delayTime);


  delay(300);
}

void setup() {

  int index;

  for(index = 0; index <= 4; index   );

  {
    pinMode(ledPins[index], OUTPUT);
  }

  pinMode(buttonPin1,INPUT_PULLUP);
  pinMode(buttonPin2,INPUT_PULLUP);
  pinMode(buttonPin3,INPUT_PULLUP);
  pinMode(buttonPin4,INPUT_PULLUP);

  firstpattern();



}

void loop() {


  if(HIGH == digitalVal2) {
      if (b2on == false amp;amp; bcount == 0){
        b4on = false;
        b3on = false;
        b2on = true;
        b1on = false;
        bcount = bcount   1;
  
  
    }
    else{
  
      digitalWrite(ledPins[4], HIGH);
    }
  }

  if (HIGH == digitalVal4) {
    if (b4on == false amp;amp; b2on == true amp;amp; bcount == 1){
      b4on = true;
      b3on = false;
      b2on = false;
      b1on = false;
      bcount = bcount   1;
    }

    else{
  
      digitalWrite(ledPins[4], HIGH);
    }
  }





  if (HIGH == digitalVal3) {
    if (b3on == false amp;amp; b4on == true amp;amp; bcount == 2){
      b3on = true;
      b3on = false;
      b4on = false;
      b1on = false;
      bcount = bcount   1;
    }
     else{
      
      digitalWrite(ledPins[4], HIGH);
    }
  }
  if (HIGH == digitalVal1) {
    if (b1on == false amp;amp; b3on == true amp;amp; bcount == 3){
      b1on = true;
      b3on = false;
      b2on = false;
      b4on = false;
      bcount = bcount   1;
    }
  
    }
   if (bcount == 4){
    digitalWrite(ledPins[5], HIGH);
   }
    else{
     
      digitalWrite(ledPins[4], HIGH);
    }



}
  

Ответ №1:

Кажется, вы немного усложняете это. Что вам нужно сделать, это создать объект с массивом таких поворотов:

 var pattern = {
    "red": [1,5],
    "blue": [3],
    "green": [2],
    "yellow": [4]
}

  

где числовые значения — это повороты, по которым был «воспроизведен» каждый цвет, затем, когда пользователь нажимает на соответствующие кнопки, сравните их ход с поворотами, указанными в массиве поворотов объекта
. для получения дополнительной информации посмотрите на эту скрипку

Комментарии:

1. Не могли бы вы объяснить это немного подробнее? Большое спасибо

2. обновил мой ответ скрипкой, которая должна привести вас по правильному пути

3. возможно ли, чтобы вы создали упрощенный шаблон, который я мог бы прочитать, а затем адаптировать для моего, я немного смущен, забыл упомянуть, это делается на arduino ICE, если это что-то изменит

4. в конце я просто добавил переменную, указывающую, правильно ли нажата кнопка каждого «поворота», и в итоге она заработала 🙂