Advertisement
RealHero

Arduino 3.1

Jun 5th, 2021
801
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.60 KB | None | 0 0
  1. #define BUZZER_PIN 13 // пин с пищалкой
  2.  
  3. #define PLAYER_COUNT 2 // количество игроков-ковбоев
  4.  
  5. int buttonPins[PLAYER_COUNT] = {0, 1};
  6.  
  7. int ledPins[PLAYER_COUNT] = {11, 12};
  8.  
  9. boolean lifes[PLAYER_COUNT*3] = {0,0,0,0,0,0};
  10.  
  11. int firstPL = 0;
  12.  
  13. int secondPL = 3;
  14.  
  15. void setup()
  16.  
  17. {
  18.  
  19. pinMode(BUZZER_PIN, OUTPUT);
  20.  
  21. for (int player = 0; player< PLAYER_COUNT; ++player)
  22.  
  23. {
  24.  
  25. pinMode(ledPins[player], OUTPUT);
  26.  
  27. pinMode(buttonPins[player], INPUT_PULLUP);
  28.  
  29. }
  30.  
  31. for (int i = 0; i < PLAYER_COUNT*3; i++)
  32.  
  33. {
  34.  
  35. pinMode(2+i, OUTPUT);
  36.  
  37. digitalWrite(2+i, lifes[i]);
  38.  
  39. }
  40.  
  41. firstPL = constrain(firstPL, 0, 2);
  42.  
  43. secondPL = constrain(secondPL, 3, 5);
  44.  
  45. }
  46.  
  47. void loop()
  48.  
  49. {
  50.  
  51. if(firstPL < 3 && secondPL < 6)
  52.  
  53. {
  54.  
  55. delay(random(2000, 7000));
  56.  
  57. tone(BUZZER_PIN, 3000, 250); // 3 килогерца, 250 миллисекунд
  58.  
  59. for (int player = 0; ;player = (player+1) % PLAYER_COUNT)
  60.  
  61. {
  62.  
  63. // если игрок номер «player» нажал кнопку...
  64.  
  65. if (!digitalRead(buttonPins[player]))
  66.  
  67. {
  68.  
  69. // ...включаем его светодиод и сигнал победы на 1 сек
  70.  
  71. digitalWrite(ledPins[player], HIGH);
  72.  
  73. tone(BUZZER_PIN, 4000, 1000);
  74.  
  75. delay(1000);
  76.  
  77. digitalWrite(ledPins[player], LOW);
  78.  
  79. if(player == 1)
  80.  
  81. {
  82.  
  83. lifes[secondPL] = 1;
  84.  
  85. ++secondPL;
  86.  
  87. }
  88.  
  89. if(player == 0)
  90.  
  91. {
  92.  
  93. lifes[firstPL] = 1;
  94.  
  95. ++firstPL;
  96.  
  97. }
  98.  
  99. for(int i = 0; i < PLAYER_COUNT*3; i++)
  100.  
  101. digitalWrite(2+i,lifes[i]);
  102.  
  103. break; // Есть победитель! Выходим (англ. break) из цикла
  104.  
  105. }
  106.  
  107. }
  108.  
  109. }
  110.  
  111. else
  112.  
  113. tone(BUZZER_PIN, 4000);
  114.  
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement