Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
"Arduino.it" ning yana bir ajoyib o'yini - bu oxirgi nashr qilganimdan ko'ra ancha rivojlangan. Nima uchun u boshqasidan ko'ra murakkabroq? Bu murakkabroq, chunki u sakrab, otib, ovozli yorug'lik va yangi nuqta bilan kurashish usuliga ega bo'lishi mumkin.
Ta'minotlar
- Arduino.
- Non paneli
- o'tish simlari
- Qizil LED
- 2 ta tugma
- 2 10k ohmli rezistorlar
- 2 220R qarshilik.
- Super yorqin ko'k LED.
- piezo signal
- 16*2 LCD displey
1 -qadam: Hammasini bir -biriga ulash
Endi siz hamma narsani sim bilan ulashingiz kerak
2 -qadam: qanday o'ynash kerak:
- Arduino -ni yoqing.
- LCD displeyda: "O'yin boshlanadi" va teskari sanoq bosilishi kerak.
- O'tish uchun tugmachalardan birini, otish uchun esa boshqasini bosing.
- Siz sakragan har bir blok siz bitta ochkoni qo'lga kiritgan bo'lsangiz, har bir * ball sizga 5 ball beradi.
- Agar sizda 50 yoki undan yuqori ball bo'lsa, siz g'alaba qozonasiz
3 -qadam: Kod
// vaqt o'tishi bilan, tezlik va tezlikni oshiradi.
#qo'shing
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; belgisiz uzun pts = 0; // tugmachalarni o'rnatish bool buttonState1 = 0; bool tugmasiState2 = 0; // int randomNums [6] to'siqlarning joylashuvi uchun tasodifiy son; // to'siqlar soni uchun tasodifiy son int randomNum = 0; // pts int randomNums1 pozitsiyasi uchun tasodifiy son [3]; // pts soni uchun tasodifiy son int randomNum1 = 0; // boshlanishining kechikish vaqti, bu asta -sekin kamayadi int myDelay = 500; // tugma 2 bosilganligini tekshirish uchun bu booleanni yaratdi, chunki agar u loop uchun birinchi marta bosilsa, men oxirigacha to'siqlar yozilmasligini xohlayman bool temp = 0; // bu o'zgaruvchi otish paytida jangchining pozitsiyalarini saqlaydi. 16 pozitsiya bo'lishi mumkin, chunki jangchi 16 pozitsiyaga ega. int tempI [16]; // nuqta tutilganligini tekshirish uchun bu booleanni ishlataman bool temp1 = 0;
// tutilgan nuqta o'rnini saqlash uchun bu o'zgaruvchidan foydalaning. hamma nuqtalarning o'rnini loop uchun birinchisining bitta iteratsiyasida saqlash uchun bo'lishi kerak. agar u faqat bitta pozitsiyani saqlagan bo'lsa, "eski" nuqta yangi iteratsiyaga qaytadi
int tempI1 [3]; // bu o'zgaruvchidan jangchining bir qancha zarbalarini olish uchun foydalaning, bu ham tempI int tugma qatorining uzunligi 2IsPressed = 0; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
bo'sh o'rnatish () {
// LCD -ning ustunlar va qatorlar sonini o'rnating: lcd.begin (16, 2); // pinMode tugmachalari rejimini o'rnatish (buttonPin1, INPUT); pinMod (tugmaPin2, Kirish); pinMode (signal, OUTPUT); lcd.setCursor (4, 0); lcd.print ("O'YIN"); lcd.setCursor (2, 1); lcd.print ("IN IN STARTS"); lcd.print ("5"); kechikish (1000); lcd.setCursor (12, 1); lcd.print ("4"); kechikish (1000); lcd.setCursor (12, 1); lcd.print ("3"); kechikish (1000); lcd.setCursor (12, 1); lcd.print ("2"); kechikish (1000); lcd.setCursor (12, 1); lcd.print ("1"); kechikish (1000); lcd.clear ();
}
void loop () {
Bu yerga:
randomNum = tasodifiy (5);
uchun (int i = 0; i9 && pts19 && pts29 && pts = 50) {pts = 0; myDelay = 500; lcd.clear (); lcd.setCursor (5, 0); lcd.print ("G'ALABA"); ohang (ovozli signal, 262); kechikish (200); ohang (buzzer, 330); kechikish (200); ohang (buzzer, 392); kechikish (100); ohang (buzzer, 330); kechikish (100); ohang (buzzer, 392); kechikish (100); ohang (signal, 523); kechikish (200); noTone (ovozli signal); kechikish (3000); lcd.clear (); mana bu yerga; } else lcd.setCursor (15, 0); lcd.print (ballar); buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); // agar jangchi o'q uzmagan bo'lsa yoki u o'q uzmagan bo'lsa, to'siqlarni o'rnatish, lekin u ham sakragan bo'lsa (! temp) {for (int j = 0; jrandomNums [j]) {lcd.setCursor (randomNums [j], 1); lcd.print ("#"); }
}
}
// ballarni sozlash
agar (! temp1) {uchun (int j = 0; j
}