2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Arduino için başka bir video oyunu. Bu harika bir oyun, son yayınladığımdan daha gelişmiş. Neden diğerinden daha karmaşık? Daha karmaşık çünkü bu zıplayabilir ve ateş edebilir ve ses ışığına ve yeni bir puan devam yöntemine sahip olabilir.
Gereçler
- Arduino.
- ekmek tahtası
- atlama telleri
- Kırmızı LED
- 2 basma düğmesi
- 2 adet 10k ohm direnç
- 2 220R direnç.
- Süper parlak Mavi LED.
- Piezo zili
- 16*2 LCD ekran
Adım 1: Her Şeyi Birlikte Kablolama
Şimdi her şeyi kablolaman gerekiyor
Adım 2: Nasıl Oynanır:
- Arduino'yu açın.
- LCD ekranda "oyun başlıyor" ve bir geri sayım yazmalıdır.
- Atlamak ve atış yapmak için düğmelerden birine basın.
- atladığınız her blok bir puan, yakaladığınız her * blok size 5 puan verir.
- 50 puan veya daha yüksek puanınız olduğunda kazandınız
Adım 3: Kod
// este jogo ve muito interessante e ao mesmo tempo irritante ve frustante mas muito divertido.
#Dahil etmek
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şaretsiz uzun pts=0; //düğme durumlarını ayarla bool buttonState1=0; bool buttonState2=0; //engellerin konumu için rastgele sayı int randomNums[6]; //engel sayısı için rastgele sayı int randomNum=0; // pts konumu için rastgele sayı int randomNums1[3]; // nokta sayısı için rastgele sayı int randomNum1=0; //kademeli olarak azalan gecikme süresini başlat unsigned int myDelay=500; //bu boolean, button2'ye basılıp basılmadığını kontrol etmek için yapıldı çünkü ilk for döngüsünde bir kez basılırsa, sonuna kadar engellerin yazılmamasını istiyorum bool temp=0; //bu değişken, savaşçının ateş ederkenki pozisyonlarını saklar. 16 pozisyon olabilir çünkü savaşçının 16 pozisyonu var. int sıcaklık[16]; // noktanın yakalanıp yakalanmadığını kontrol etmek için bu boole değerini kullanıyorum bool temp1=0;
//yakalanan noktanın konumunu saklamak için bu değişkeni kullanın. tüm noktaların konumunu ilk for döngüsünün bir yinelemesinde depolamak için ve dizisi olmalıdır. sadece bir pozisyon sakladıysa, "eski" nokta yeni yinelemede geri gelirdi
int tempI1[3]; //bu değişkeni, aynı zamanda bir dizi tempI int button2IsPressed=0; LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
geçersiz kurulum() {
// LCD'nin sütun ve satır sayısını ayarla: lcd.begin(16, 2); // düğme pimi modunu ayarla pinMode(buttonPin1, INPUT); pinMode(buttonPin2, INPUT); pinMode(buzzer, OUTPUT); lcd.setCursor(4, 0); lcd.print("OYUN"); lcd.setCursor(2, 1); lcd.print("BAŞLAR"); lcd.print("5"); gecikme(1000); lcd.setCursor(12, 1); lcd.print("4"); gecikme(1000); lcd.setCursor(12, 1); lcd.print("3"); gecikme(1000); lcd.setCursor(12, 1); lcd.print("2"); gecikme(1000); lcd.setCursor(12, 1); lcd.print("1"); gecikme(1000); lcd.clear();
}
boşluk döngüsü () {
Burada:
randomNum=rastgele(5);
for(int i=0; i9 && pts19 && pts29 && pts=50){ pts=0; gecikmem=500; lcd.clear(); lcd.setCursor(5, 0); lcd.print("Zafer"); ton(sesli, 262); gecikme(200); ton(zil, 330); gecikme(200); ton(sesli uyarı, 392); gecikme(100); ton(zil, 330); gecikme(100); ton(sesli uyarı, 392); gecikme(100); ton(zil, 523); gecikme(200); noTone(sesli uyarı); gecikme(3000); lcd.clear(); buraya gel; } else lcd.setCursor(15, 0); lcd.print(puan); buttonState1=digitalRead(buttonPin1); buttonState2=digitalRead(buttonPin2); //savaşçı ateş etmemişse veya ateş etmemişse ama o da atlamışsa engel koymak if(!temp){ for(int j=0; jrandomNums[j]){ lcd.setCursor(randomNums[j], 1); lcd.print("#"); }
}
}
// puanları ayarlama
if(!temp1){ for(int j=0; j
}