2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
Un alt joc video pentru arduino.it este un joc grozav, este mai avansat decât ultimul pe care l-am publicat.
Provizii
- Arduino.
- Pană de pâine
- fire jumper
- LED roșu
- 2 butoane
- 2 rezistențe de 10k ohm
- 2 rezistoare 220R.
- LED-ul albastru super luminos.
- buzzer piezo
- Afisaj LCD 16 * 2
Pasul 1: Cablarea totul împreună
Acum trebuie să conectați totul
Pasul 2: Cum se joacă:
- Porniți arduino.
- Ecranul LCD ar trebui să tipărească: „jocul începe în” și o numărătoare inversă.
- Apăsați unul dintre butoane pentru a sări și altul pentru a fotografia.
- fiecare bloc pe care îl săriți a câștigat un punct și fiecare * pe care îl prindeți vă oferă 5 puncte.
- Când ai 50 de puncte sau mai mult ai câștigat
Pasul 3: Codul
// este jogo e muito interesante e ao mesmo tempo irritante e frustante mas muito divertido.
#include
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
butonul const intPin1 = 1; butonul const intPin2 = 6; const int buzzer = 7; puncte lungi nesemnate = 0; // set buttonstates bool buttonState1 = 0; buton boolStat2 = 0; // număr aleatoriu pentru poziția obstacolelor în randomNums [6]; // număr aleatoriu pentru numărul de obstacole int randomNum = 0; // număr aleatoriu pentru poziția punctelor în randomNums1 [3]; // număr aleatoriu pentru numărul de puncte int randomNum1 = 0; // începe timpul de întârziere, care scade treptat nesemnat în myDelay = 500; // a făcut acest boolean pentru a verifica dacă butonul 2 este apăsat, deoarece dacă este apăsat o dată în prima buclă, vreau să nu se scrie obstacole până la sfârșitul acestuia bool temp = 0; // această variabilă stochează pozițiile războinicului în timp ce acesta trage. pot exista 16 poziții deoarece războinicul are 16 poziții. int tempI [16]; // folosesc acest boolean pentru a verifica dacă punctul este prins bool temp1 = 0;
// utilizați această variabilă pentru a stoca poziția punctului prins. trebuie să fie și matrice pentru a stoca poziția tuturor punctelor într-o singură iterație a primei bucle for. dacă ar stoca o singură poziție, atunci punctul „vechi” ar reveni în noua iterație
int tempI1 [3]; // utilizați această variabilă pentru a avea un număr de fotografii ale războinicului, care este, de asemenea, lungimea unui buton tempI int matrice2IsPressed = 0; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
configurare nulă () {
// configurați numărul LCD de coloane și rânduri: lcd.begin (16, 2); // setează modul pin pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buzzer, OUTPUT); lcd.setCursor (4, 0); lcd.print („JOCUL”); lcd.setCursor (2, 1); lcd.print („STARTS IN”); lcd.print ("5"); întârziere (1000); lcd.setCursor (12, 1); lcd.print ("4"); întârziere (1000); lcd.setCursor (12, 1); lcd.print ("3"); întârziere (1000); lcd.setCursor (12, 1); lcd.print ("2"); întârziere (1000); lcd.setCursor (12, 1); lcd.print ("1"); întârziere (1000); lcd.clear ();
}
bucla nulă () {
Aici:
randomNum = random (5);
pentru (int i = 0; i9 && pts19 && pts29 && pts = 50) {pts = 0; întârzierea mea = 500; lcd.clear (); lcd.setCursor (5, 0); lcd.print („VICTORIE”); ton (buzzer, 262); întârziere (200); ton (buzzer, 330); întârziere (200); ton (buzzer, 392); întârziere (100); ton (buzzer, 330); întârziere (100); ton (buzzer, 392); întârziere (100); ton (buzzer, 523); întârziere (200); noTone (buzzer); întârziere (3000); lcd.clear (); du-te aici; } else lcd.setCursor (15, 0); lcd.print (puncte); buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); // punerea obstacolelor dacă războinicul nu a tras sau a tras, dar a sărit și dacă (! temp) {for (int j = 0; jrandomNums [j]) {lcd.setCursor (randomNums [j], 1); lcd.print ("#"); }
}
}
// setarea punctelor
if (! temp1) {for (int j = 0; j
}