2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Ďalšia videohra pre arduino.je to skvelá hra, ktorá je pokročilejšia než tá, ktorú zverejňujem. Prečo je zložitejšia ako ostatné? Je to zložitejšie, pretože to môže skákať a strieľať a mať zvukové svetlo a novú metódu bodov.
Zásoby
- Arduino.
- Breadboard
- prepojovacie vodiče
- Červená LED
- 2 tlačidlá
- 2 odpory 10 kOhm
- 2 odpory 220R.
- Super jasná modrá LED dióda.
- piezový bzučiak
- 16*2 LCD displej
Krok 1: Zapojenie všetkého dohromady
Teraz musíte všetko prepojiť
Krok 2: Ako hrať:
- Zapnite arduino.
- Na displeji LCD by sa malo vytlačiť: „Hra začína o“a odpočítavanie.
- Stlačením jedného z tlačidiel skočíte a druhým vystrelíte.
- za každý vyskočený blok ste získali jeden bod a za každé * chytenie získate 5 bodov.
- Keď získate 50 bodov alebo viac, vyhrali ste
Krok 3: Kód
// záleží na tom, aby ste sa zaujímali o ďalšie tempo, ale aby ste to nesklamali, divertido.
#zahrnúť
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
tlačidlo const intPin1 = 1; tlačidlo const intPin2 = 6; bzučiak const int = 7; nepodpísané dlhé body = 0; // set buttonstates bool buttonState1 = 0; tlačidlo boolState2 = 0; // náhodné číslo pre polohu prekážok int randomNums [6]; // náhodné číslo pre počet prekážok int randomNum = 0; // náhodné číslo pre polohu pts int randomNums1 [3]; // náhodné číslo pre počet bodov int randomNum1 = 0; // čas oneskorenia spustenia, ktorý sa postupne znižuje bez znamienka int myDelay = 500; // toto bolo booleovské, aby skontroloval, či je stlačené tlačidlo2, pretože ak je stlačené raz v prvej slučke for, chcem, aby sa prekážky nepísali až do konca bool temp = 0; // táto premenná ukladá pozície bojovníka, keď strieľa. môže existovať 16 pozícií, pretože bojovník má 16 pozícií. int tempI [16]; // pomocou tejto logickej hodnoty skontrolujem, či je bod zachytený bool temp1 = 0;
// pomocou tejto premennej uložíte polohu zachyteného bodu. musí to byť a pole na uloženie polohy všetkých bodov v jednej iterácii prvej slučky for. ak by ukladal iba jednu pozíciu, potom by sa „starý“bod vrátil v novej iterácii
int tempI1 [3]; // pomocou tejto premennej získate počet záberov bojovníka, čo je tiež dĺžka poľa tempI int button2IsPressed = 0; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
neplatné nastavenie () {
// nastavenie počtu stĺpcov a riadkov na LCD: lcd.begin (16, 2); // nastavenie režimu pinpin pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (bzučiak, VÝSTUP); lcd.setCursor (4, 0); lcd.print („HRA“); lcd.setCursor (2, 1); lcd.print („ZAČÍNA V“); lcd.print ("5"); oneskorenie (1000); lcd.setCursor (12, 1); lcd.print ("4"); oneskorenie (1000); lcd.setCursor (12, 1); lcd.print ("3"); oneskorenie (1000); lcd.setCursor (12, 1); lcd.print ("2"); oneskorenie (1000); lcd.setCursor (12, 1); lcd.print ("1"); oneskorenie (1000); lcd.clear ();
}
prázdna slučka () {
tu:
randomNum = random (5);
pre (int i = 0; i9 && pts19 && pts29 && pts = 50) {pts = 0; myDelay = 500; lcd.clear (); lcd.setCursor (5, 0); lcd.print („VÍŤAZSTVO“); tón (bzučiak, 262); oneskorenie (200); tón (bzučiak, 330); oneskorenie (200); tón (bzučiak, 392); oneskorenie (100); tón (bzučiak, 330); oneskorenie (100); tón (bzučiak, 392); oneskorenie (100); tón (bzučiak, 523); oneskorenie (200); noTone (bzučiak); oneskorenie (3000); lcd.clear (); choď sem; } else lcd.setCursor (15, 0); lcd.print (body); buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); // kladenie prekážok, ak bojovník nevystrelil alebo vystrelil, ale tiež skočil, ak (! temp) {for (int j = 0; jrandomNums [j]) {lcd.setCursor (randomNums [j], 1); lcd.print ("#"); }
}
}
// nastavenie bodov
if (! temp1) {for (int j = 0; j
}