"Ninja dolar" igra za Arduino: 3 koraka
"Ninja dolar" igra za Arduino: 3 koraka
Anonim
Slika
Slika

Još jedna video igra za arduino.odlična je igra naprednija je od zadnje koju objavljujem. Zašto je složenija od drugih? Kompleksnija je jer može skakati i pucati te imati zvučnu svjetlost i novu metodu za bodovanje.

Pribor

  1. Arduino.
  2. Oglasna ploča
  3. kratkospojne žice
  4. Crvena LED
  5. 2 tipke
  6. 2 otpornika od 10 k ohma
  7. 2 otpornika 220R.
  8. Izuzetno svijetla plava LED dioda.
  9. piezo zujalica
  10. 16*2 LCD zaslon

Korak 1: Ožičite sve zajedno

Ožičenje svega zajedno
Ožičenje svega zajedno

Sada morate sve ožičiti

Korak 2: Kako igrati:

  1. Uključite arduino.
  2. LCD bi trebao ispisati: "igra počinje za" i odbrojavanje.
  3. Pritisnite jednu od tipki za skok, a drugu za snimanje.
  4. svaki blok koji preskočite osvojili ste jedan bod i svaki * koji ulovite daje vam 5 bodova.
  5. Ako imate 50 bodova ili više, pobijedili ste

Korak 3: Kôd

// este jogo e muito interessante e ao mesmo tempo angryante e frustante mas muito divertido.

#uključi

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;

const int buttonPin1 = 1; const int buttonPin2 = 6; const int zujalica = 7; bez potpisa dugi bod = 0; // postavlja gumbne oznake bool buttonState1 = 0; bool buttonState2 = 0; // slučajni broj za položaj prepreka int randomNums [6]; // slučajni broj za broj prepreka int randomNum = 0; // slučajni broj za poziciju točaka int randomNums1 [3]; // slučajni broj za broj bodova int randomNum1 = 0; // vrijeme kašnjenja početka, koje se postupno smanjuje unsigned int myDelay = 500; // napravio ovu logičku vrijednost da provjeri je li pritisnut button2 jer ako se pritisne jednom u prvoj for petlji, želim da se prepreke ne zapisuju do kraja bool temp = 0; // ova varijabla pohranjuje položaje ratnika dok puca. može biti 16 položaja jer ratnik ima 16 položaja. int tempI [16]; // Koristim ovu logičku vrijednost za provjeru je li točka uhvaćena bool temp1 = 0;

// koristiti ovu varijablu za spremanje položaja hvaćene točke. mora biti i niz za spremanje položaja svih točaka u jednu iteraciju prve for petlje. ako je pohranio samo jedan položaj, tada bi se "stara" točka vratila u novoj iteraciji

int tempI1 [3]; // koristiti ovu varijablu za broj snimaka ratnika, što je ujedno i duljina polja tempI int button2IsPressed = 0; LCD tekući kristal (rs, en, d4, d5, d6, d7);

void setup () {

// postavljanje broja stupaca i redaka LCD -a: lcd.begin (16, 2); // postavljanje načina rada pinpinode pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (zujalica, OUTPUT); lcd.setCursor (4, 0); lcd.print ("IGRA"); lcd.setCursor (2, 1); lcd.print ("POČINJE"); lcd.print ("5"); kašnjenje (1000); lcd.setCursor (12, 1); lcd.print ("4"); kašnjenje (1000); lcd.setCursor (12, 1); lcd.print ("3"); kašnjenje (1000); lcd.setCursor (12, 1); lcd.print ("2"); kašnjenje (1000); lcd.setCursor (12, 1); lcd.print ("1"); kašnjenje (1000); lcd.clear ();

}

void loop () {{100} {101}

ovdje:

randomNum = slučajno (5);

za (int i = 0; i9 && pts19 && pts29 && pts = 50) {pts = 0; myDelay = 500; lcd.clear (); lcd.setCursor (5, 0); lcd.print ("POBJEDA"); ton (zujalica, 262); kašnjenje (200); ton (zujalica, 330); kašnjenje (200); ton (zujalica, 392); kašnjenje (100); ton (zujalica, 330); kašnjenje (100); ton (zujalica, 392); kašnjenje (100); ton (zujalica, 523); kašnjenje (200); noTone (zujalica); kašnjenje (3000); lcd.clear (); idi ovdje; } else lcd.setCursor (15, 0); lcd.tisak (poeni); buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); // postavljanje prepreka ako ratnik nije pucao ili je pucao, ali je i skočio ako (! temp) {for (int j = 0; jrandomNums [j]) {lcd.setCursor (randomNums [j], 1); lcd.print ("#"); }

}

}

// postavljanje bodova

ako (! temp1) {for (int j = 0; j

}