#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. в конце я просто добавил переменную, указывающую, правильно ли нажата кнопка каждого «поворота», и в итоге она заработала 🙂