Просмотр содержимого документа
«Кнопочные ковбои (игра для Ардуино)»
Кнопочные ковбои.
простая игра на скорость реакции, кто первый спустил курок, тот и победил
int buttonPins[2] = {3, 13};//кнопки
int ledPins[2] = {9, 11};//светодиоды
int mas[2] = {0,0};//счет
void setup()
{
pinMode(12, OUTPUT); //пищалка
for (int player = 0; player
// при помощи квадратных скобок получают значение в массиве
// под указанным в них номером. Нумерация начинается с нуля
pinMode(ledPins[player], OUTPUT);
pinMode(buttonPins[player], INPUT_PULLUP);
}
Serial.begin(9600);
}
void loop()
{
// даём сигнал «пли!», выждав случайное время от 2 до 7 сек
delay(random(2000, 7000));
tone(12, 3000, 250); // 3 килогерца, 250 миллисекунд
for (int player = 0; ; player = (player+1) % 2) {
// если игрок номер «player» нажал кнопку...
if (!digitalRead(buttonPins[player])) {
// ...включаем его светодиод и сигнал победы на 1 сек
digitalWrite(ledPins[player], HIGH);
tone(12, 4000, 1000);
mas[player]+=1;
delay(1000);
digitalWrite(ledPins[player], LOW);
Serial.print(mas[0]);
Serial.print(" ");
Serial.print(mas[1]);
Serial.println("");
break; // Есть победитель! Выходим (англ. break) из цикла
}
}
}
Задание. Самостоятельно измените существующую программу и схему
1. Сделайте напряженный вариант игры: пусть интервал между сигналами будет в диапазоне от 10 до 15 секунд.
2. Добавьте в игру еще двух ковбоев!
В игре есть лазейка: кнопку можно зажать до сигнала «пли!» и таким образом сразу же выиграть. Дополните программу так, чтобы так выиграть было нельзя.
void loop()
{
// даём сигнал «пли!», выждав случайное время от 2 до 7 сек
delay(random(2000, 7000));
for (; ;) {
if (digitalRead(buttonPins[0]) && digitalRead(buttonPins[1])) break;
else Serial.println(" error - dont press button");
}
tone(12, 3000, 250); // 3 килогерца, 250 миллисекунд
for (int player = 0; ; player = (player+1) % 2) {