Guest User

joc-antrenare-memorie

a guest
Sep 21st, 2020
352
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.21 KB | None | 0 0
  1. const int nivel_maxim = 100;
  2. int secventa[nivel_maxim];
  3. int sunet[nivel_maxim];
  4. int secventa_jucator[nivel_maxim];
  5. int nivel = 1;
  6. int note = 0;
  7. int velocity = 1000;
  8.  
  9.  
  10. void setup() { //declaram pinii
  11. pinMode(13, OUTPUT); //led verde
  12. pinMode(12, OUTPUT); //led rosu
  13. pinMode(11, OUTPUT); //led galben
  14. pinMode(10, OUTPUT); //led albastru
  15.  
  16. pinMode(7, INPUT_PULLUP); //buton 1
  17. pinMode(6, INPUT_PULLUP); //buton 2
  18. pinMode(5, INPUT_PULLUP); //buton 3
  19. pinMode(4, INPUT_PULLUP); //buton 4
  20.  
  21. pinMode(3, OUTPUT); //buzzer
  22. }
  23.  
  24. void loop() {
  25. if (nivel == 1) {
  26. generare_secventa();
  27.  
  28. for (int i = 13; i >= 10; i--) { //leduri on/off
  29. digitalWrite(i, HIGH);
  30. delay(100);
  31. digitalWrite(i, LOW);
  32. }
  33. }
  34.  
  35. if (digitalRead(7) == LOW || nivel != 1) { //butonul de start = 1
  36. show_secventa();
  37. get_secventa();
  38. }
  39. }
  40.  
  41. void generare_secventa() {
  42. randomSeed(millis()); //se genereaza secventele random
  43.  
  44. for (int i = 0; i < nivel_maxim; i++) {
  45. secventa[i] = random(10, 14);
  46.  
  47. switch (secventa[i]) { //asociem un sunet fiecarei culori
  48. case 10:
  49. note = 349; //Fa
  50. break;
  51. case 11:
  52. note = 329; //Mi
  53. break;
  54. case 12:
  55. note = 293; //Re
  56. break;
  57. case 13:
  58. note = 261; //Do
  59. break;
  60. }
  61. sunet[i] = note;
  62. }
  63. }
  64.  
  65. void show_secventa() {
  66. digitalWrite(13, LOW);
  67. digitalWrite(12, LOW);
  68. digitalWrite(11, LOW);
  69. digitalWrite(10, LOW);
  70.  
  71. for (int i = 0; i < nivel; i++) {
  72. digitalWrite(secventa[i], HIGH);
  73. tone(3, sunet[i]);
  74. delay(velocity);
  75. digitalWrite(secventa[i], LOW);
  76. noTone(3);
  77. delay(200);
  78. }
  79. }
  80.  
  81. void get_secventa() {
  82. int flag = 0; //flag - secventa corecta
  83.  
  84. for (int i = 0; i < nivel; i++) {
  85. flag = 0;
  86.  
  87. while (flag == 0) {
  88.  
  89. if (digitalRead(7) == LOW) {
  90. digitalWrite(13, HIGH);
  91. tone(3, 261); //Do
  92. delay(velocity);
  93. noTone(3);
  94. secventa_jucator[i] = 13;
  95. flag = 1;
  96. delay(200);
  97.  
  98. if (secventa_jucator[i] != secventa[i]) {
  99. secventa_gresita();
  100. return ;
  101. }
  102. digitalWrite(13, LOW);
  103. }
  104.  
  105. if (digitalRead(6) == LOW) {
  106. digitalWrite(12, HIGH);
  107. tone(3, 293); //Re
  108. delay(velocity);
  109. noTone(3);
  110. secventa_jucator[i] = 12;
  111. flag = 1;
  112. delay(200);
  113.  
  114. if (secventa_jucator[i] != secventa[i]) {
  115. secventa_gresita();
  116. return ;
  117. }
  118. digitalWrite(12, LOW);
  119. }
  120.  
  121. if (digitalRead(5) == LOW) {
  122. digitalWrite(11, HIGH);
  123. tone(3, 329); //Mi
  124. delay(velocity);
  125. noTone(3);
  126. secventa_jucator[i] = 11;
  127. flag = 1;
  128. delay(200);
  129.  
  130. if (secventa_jucator[i] != secventa[i]) {
  131. secventa_gresita();
  132. return ;
  133. }
  134. digitalWrite(11, LOW);
  135. }
  136.  
  137. if (digitalRead(4) == LOW) {
  138. digitalWrite(10, HIGH);
  139. tone(3, 349); //Fa
  140. delay(velocity);
  141. noTone(3);
  142. secventa_jucator[i] = 10;
  143. flag = 1;
  144. delay(200);
  145.  
  146. if (secventa_jucator[i] != secventa[i]) {
  147. secventa_gresita();
  148. return ;
  149. }
  150. digitalWrite(10, LOW);
  151. }
  152. }
  153. }
  154. secventa_corecta();
  155. }
  156.  
  157. void secventa_corecta() {
  158. digitalWrite(13, LOW);
  159. digitalWrite(12, LOW);
  160. digitalWrite(11, LOW);
  161. digitalWrite(10, LOW);
  162. delay(250);
  163.  
  164. digitalWrite(13, HIGH);
  165. digitalWrite(12, HIGH);
  166. digitalWrite(11, HIGH);
  167. digitalWrite(10, HIGH);
  168. delay(500);
  169.  
  170. digitalWrite(13, LOW);
  171. digitalWrite(12, LOW);
  172. digitalWrite(11, LOW);
  173. digitalWrite(10, LOW);
  174. delay(500);
  175.  
  176. if (nivel < nivel_maxim) {
  177. nivel++;
  178. }
  179. velocity -= 50; //creste dificultatea
  180. }
  181.  
  182. void secventa_gresita() {
  183. for (int i = 0; i < 3; i++) {
  184. digitalWrite(13, HIGH);
  185. digitalWrite(12, HIGH);
  186. digitalWrite(11, HIGH);
  187. digitalWrite(10, HIGH);
  188. tone(3, 233);
  189. delay(250);
  190.  
  191. digitalWrite(13, LOW);
  192. digitalWrite(12, LOW);
  193. digitalWrite(11, LOW);
  194. digitalWrite(10, LOW);
  195. noTone(3);
  196. delay(250);
  197. }
  198. nivel = 1;
  199. velocity = 1000;
  200. }
Add Comment
Please, Sign In to add comment