kuzznya

plane.ino

Mar 23rd, 2023
671
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <LiquidCrystal.h>
  2. LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
  3. int ButtonUP = 8;
  4. int ButtonDOWN = 9;
  5. byte igrok[8] = {
  6.   B10000,
  7.   B11000,
  8.   B10100,
  9.   B10001,
  10.   B10001,
  11.   B10100,
  12.   B11000,
  13.   B10000,
  14. };
  15. byte stena[8] = {
  16.   B11111,
  17.   B11111,
  18.   B11111,
  19.   B11111,
  20.   B11111,
  21.   B11111,
  22.   B11111,
  23.   B11111,
  24. };
  25. byte life[8] = {
  26.   B00000,
  27.   B01010,
  28.   B10101,
  29.   B10001,
  30.   B01010,
  31.   B00100,
  32.   B00000,
  33.   B00000,
  34. };
  35. int stena1_1 = -1;
  36. int stena2_1 = -1;
  37. int stena1_2 = -1;
  38. int stena2_2 = -1;
  39. boolean peremesch = false;
  40. byte j = 0;
  41. byte count = 0;
  42. byte lives = 3;
  43. int record = 0;
  44. const int buzzer_pin = 11;
  45.  
  46. void setup() {
  47.   pinMode (ButtonUP, INPUT);
  48.   pinMode (ButtonDOWN, INPUT);
  49.   pinMode(buzzer_pin, OUTPUT);
  50.   lcd.begin(16, 2);
  51.   lcd.createChar(0, igrok);
  52.   lcd.createChar(1, stena);
  53.   lcd.createChar(2, life);
  54.   randomSeed(analogRead(0));
  55.   zagruzka();
  56. }
  57.  
  58. void zagruzka() {
  59.   lcd.setCursor(0,0);
  60.   lcd.print("                ");
  61.   lcd.setCursor(0,1);
  62.   lcd.print("                ");
  63.   for (int i=0; i<16; i++) {
  64.     lcd.setCursor(i,0);
  65.     lcd.write(1);
  66.     lcd.setCursor(i,1);
  67.     lcd.write(1);
  68.     delay(300);
  69.   }
  70.   lcd.setCursor(0,0);
  71.   lcd.print("                ");
  72.   lcd.setCursor(0,1);
  73.   lcd.print("                ");
  74. }
  75.  
  76. void peremeschenie() {
  77.   if (digitalRead(ButtonUP) == HIGH)
  78. {
  79.   peremesch = false;
  80. }
  81. if (digitalRead(ButtonDOWN) == HIGH)
  82. {
  83.   peremesch = true;
  84. }
  85. }
  86.  
  87. void obnovlenie() {
  88.  
  89.   lcd.setCursor(0,0);
  90.   lcd.print("                ");
  91.   lcd.setCursor(0,1);
  92.   lcd.print("                ");
  93.   lcd.setCursor(14,1);
  94.   lcd.print(lives);
  95.   lcd.setCursor(15,1);
  96.   lcd.write(2);
  97.   if (peremesch == false)
  98.   {
  99.     lcd.setCursor(0,0);
  100.     lcd.write(j);
  101.   }
  102.   else
  103.   {
  104.     lcd.setCursor(0,1);
  105.     lcd.write(j);
  106.   }
  107.   if (stena1_1 <= 16 && stena1_1 >= 0)
  108.   {
  109.     lcd.setCursor(stena1_1,0);
  110.     lcd.write(1);
  111.   }
  112.   if(stena2_1 <= 13 && stena2_1 >= 0)
  113.   {
  114.     lcd.setCursor(stena2_1,1);
  115.     lcd.write(1);
  116.   }
  117.   if (stena1_2 <= 16 && stena1_2 >= 0)
  118.   {
  119.     lcd.setCursor(stena1_2,0);
  120.     lcd.write(1);
  121.   }
  122.   if(stena2_2 <= 13 && stena2_2 >= 0)
  123.   {
  124.     lcd.setCursor(stena2_2,1);
  125.     lcd.write(1);
  126.   }
  127. }
  128.  
  129. void steny() {
  130.   if(stena1_1 == -1)
  131.   {
  132.     stena1_1 = round(random(16, 32));
  133.   }
  134.   if(stena2_1 == -1)
  135.   {
  136.     stena2_1 = round(random(stena1_1 + 2, 32));
  137.   }
  138.   if(stena1_2 == -1)
  139.   {
  140.     do {
  141.     stena1_2 = round(random(stena1_1 + 3, 48));
  142.     } while(stena1_2 == stena2_1);
  143.   }
  144. if(stena2_2 == -1)
  145.   {
  146.     do {
  147.     stena2_2 = round(random(stena2_1 + 3, 48));
  148.     } while(stena2_2 == stena1_2);
  149.   }
  150.  
  151. if(stena1_1 == stena2_1)
  152. {
  153.   stena2_1 += 2;
  154. }
  155.   if(stena1_1 == stena2_2)
  156.   {
  157.     stena2_2 += 2;
  158.   }
  159. }
  160.  
  161. void proverka() {
  162.   if ((peremesch == false && (stena1_1 == 0 || stena1_2 == 0)) || (peremesch == true && (stena2_1 == 0 || stena2_2 == 0)))
  163.   {
  164.     lives -= 1;
  165.     if (lives >= 1)
  166.     {
  167.    for (int i=0; i<4; i++)
  168.     {
  169.   lcd.setCursor(0,0);
  170.   lcd.print("                ");
  171.   lcd.setCursor(0,1);
  172.   lcd.print("                ");
  173.   delay(300);
  174.   lcd.setCursor(3,0);
  175.   lcd.print("-1 LIFE!");
  176.   delay(400);
  177.     }
  178.     delay(400);
  179.   }
  180.   else
  181.   {
  182.     stena1_1 = 0;
  183.     stena1_2 = 0;
  184.     stena2_1 = 0;
  185.     stena2_2 = 0;
  186.   for (int i=0; i<4; i++)
  187.     {
  188.   lcd.setCursor(0,0);
  189.   lcd.print("                ");
  190.   lcd.setCursor(0,1);
  191.   lcd.print("                ");
  192.   delay(300);
  193.   lcd.setCursor(3,0);
  194.   lcd.print("GAME OVER!");
  195.   lcd.setCursor(0,1);
  196.   lcd.print(record);
  197.   lcd.setCursor(5,1);
  198.   lcd.print("m");
  199.   delay(500);
  200.     }
  201.     delay(700);
  202.     lives = 3;
  203.     record = 0;
  204.   }
  205.   }
  206.  
  207.  
  208. }
  209.  
  210. void loop() {
  211. obnovlenie();
  212. steny();
  213. proverka();
  214. peremeschenie();
  215.   stena1_1 -= 1;
  216.   stena1_2 -= 1;
  217.   stena2_1 -= 1;
  218.   stena2_2 -= 1;
  219.   record += 1;
  220.   if(record <= 100)
  221.   {
  222.   delay(60);
  223.   peremeschenie();
  224.   delay(60);
  225.   peremeschenie();
  226.   delay(60);
  227.   peremeschenie();
  228.   delay(60);
  229.   peremeschenie();
  230.   delay(60);
  231.   peremeschenie();
  232.   delay(60);
  233.   peremeschenie();
  234.   }
  235.   else if(record > 100 && record <= 200)
  236.   {
  237.   delay(40);
  238.   peremeschenie();
  239.   delay(50);
  240.   peremeschenie();
  241.   delay(50);
  242.   peremeschenie();
  243.   delay(50);
  244.   peremeschenie();
  245.   delay(50);
  246.   peremeschenie();
  247.   delay(40);
  248.   peremeschenie();
  249.   }
  250.   else if(record > 200 && record <= 400)
  251.   {
  252.   delay(40);
  253.   peremeschenie();
  254.   delay(40);
  255.   peremeschenie();
  256.   delay(40);
  257.   peremeschenie();
  258.   delay(40);
  259.   peremeschenie();
  260.   delay(40);
  261.   peremeschenie();
  262.   delay(40);
  263.   peremeschenie();
  264.   }
  265.   else
  266.   {
  267.   delay(30);
  268.   peremeschenie();
  269.   delay(30);
  270.   peremeschenie();
  271.   delay(30);
  272.   peremeschenie();
  273.   delay(30);
  274.   peremeschenie();
  275.   delay(30);
  276.   peremeschenie();
  277.   delay(30);
  278.   peremeschenie();
  279.   }
  280. }
Advertisement
Add Comment
Please, Sign In to add comment