Mündəricat:

"Ninja Dolları" Arduino üçün Oyun: 3 addım
"Ninja Dolları" Arduino üçün Oyun: 3 addım

Video: "Ninja Dolları" Arduino üçün Oyun: 3 addım

Video:
Video: aşırı sonsuz merdiven videosu #shorts 2024, Noyabr
Anonim
Şəkil
Şəkil

Başqa bir video oyunu, arduino.it -in əla bir oyunu, son nəşr etdiyimdən daha inkişaf etmişdir. Niyə digərlərindən daha mürəkkəbdir? Bu, tullanmaq və vurmaq, səs işığına və yeni nöqtələr cont metoduna sahib ola biləcəyindən daha mürəkkəbdir.

Təchizat

  1. Arduino.
  2. Çörək lövhəsi
  3. tullanan tellər
  4. Qırmızı LED
  5. 2 düymə
  6. 2 10k ohm müqavimət
  7. 2 220R rezistor.
  8. Super parlaq mavi LED.
  9. piezo siqnalı
  10. 16*2 LCD ekran

Addım 1: Hər şeyi birlikdə birləşdirin

Hər şeyi Birlikdə Kabelləşdirmək
Hər şeyi Birlikdə Kabelləşdirmək

İndi hər şeyi bağlamaq lazımdır

Addım 2: Necə Oynanır:

  1. Arduino yandırın.
  2. LCD yazmalıdır: "oyun başlayır" və geri sayım.
  3. Atmaq üçün düymələrdən birini və digərini vurun.
  4. atladığınız hər blok bir xal qazandı və tutduğunuz hər * 5 xal verir.
  5. 50 və ya daha yüksək bal aldığınız zaman qazandınız

Addım 3: Kod

// ən çox maraqlandıran şey, bir müddət əvvəl, bir az da sürətləndirməkdir.

#daxil edin

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

const int buttonPin1 = 1; const int buttonPin2 = 6; const int buzzer = 7; işarəsiz uzun nöqtələr = 0; // düymələr qurmaq bool buttonState1 = 0; bool düyməsiState2 = 0; // int randomNums [6] maneələrin mövqeyi üçün təsadüfi ədəd; // maneələrin sayı üçün təsadüfi ədəd int randomNum = 0; // int randomNums1 nöqtələrinin mövqeyi üçün təsadüfi ədəd [3]; // təsadüfi ədədlərin sayı int randomNum1 = 0; // başlanğıc gecikmə vaxtı, tədricən işarəsiz azalır int myDelay = 500; // düymənin 2 basıldığını yoxlamaq üçün bu boolean etdi, çünki loop üçün ilk dəfə bir dəfə basıldığı təqdirdə maneələrin sonuna qədər yazılmamasını istəyirəm bool temp = 0; // bu dəyişən atış edərkən döyüşçünün mövqelərini saxlayır. döyüşçünün 16 mövqeyi olduğu üçün 16 mövqe ola bilər. int tempI [16]; // nöqtənin tutulduğunu yoxlamaq üçün bu boolean istifadə edirəm bool temp1 = 0;

// tutulan nöqtənin mövqeyini saxlamaq üçün bu dəyişəni istifadə edin. bütün nöqtələrin mövqeyini loop üçün birincinin bir iterasiyasında saxlamaq üçün olmalıdır və olmalıdır. yalnız bir mövqe saxlasaydı, "köhnə" nöqtə yeni iterasiyada geri dönərdi

int tempI1 [3]; // bu dəyişəni bir sıra döyüşçü atışlarına sahib olmaq üçün istifadə edin, bu da tempI int düyməsinin uzunluğu 2IsPressed = 0; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);

boş quraşdırma () {

// LCD -nin sütun və satır sayını təyin edin: lcd.begin (16, 2); // pinMode düyməsini sıxmaq rejimini təyin etmək (buttonPin1, INPUT); pinMode (düyməPin2, GİRİŞ); pinMode (səs siqnalı, ÇIXIŞ); lcd.setCursor (4, 0); lcd.print ("OYUN"); lcd.setCursor (2, 1); lcd.print ("BAŞLAYIR"); lcd.print ("5"); gecikmə (1000); lcd.setCursor (12, 1); lcd.print ("4"); gecikmə (1000); lcd.setCursor (12, 1); lcd.print ("3"); gecikmə (1000); lcd.setCursor (12, 1); lcd.print ("2"); gecikmə (1000); lcd.setCursor (12, 1); lcd.print ("1"); gecikmə (1000); lcd.clear ();

}

boşluq döngəsi () {

burada:

randomNum = təsadüfi (5);

for (int i = 0; i9 && pts19 && pts29 && pts = 50) {pts = 0; myDelay = 500; lcd.clear (); lcd.setCursor (5, 0); lcd.print ("QƏLƏBƏ"); ton (səs -küy, 262); gecikmə (200); ton (səs -küy, 330); gecikmə (200); ton (səs -küy, 392); gecikmə (100); ton (səs -küy, 330); gecikmə (100); ton (səs -küy, 392); gecikmə (100); ton (səs -küy, 523); gecikmə (200); noTone (səs siqnalı); gecikmə (3000); lcd.clear (); bura getdim; } başqa lcd.setCursor (15, 0); lcd çap (nöqtələr); buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); // döyüşçü atəş etməsə və ya atəş açsa maneələr yaratmaq, (! temp) {for (int j = 0; jrandomNums [j]) {lcd.setCursor (randomNums [j], 1); lcd.print ("#"); }

}

}

// nöqtələr qurmaq

əgər (! temp1) {üçün (int j = 0; j

}

Tövsiyə: