İçindekiler:

Arduino için Oyun "Ninja Doları": 3 Adım
Arduino için Oyun "Ninja Doları": 3 Adım

Video: Arduino için Oyun "Ninja Doları": 3 Adım

Video: Arduino için Oyun
Video: SINIFLARA GÖRE AKILLI BİLEKLİKLER 2024, Kasım
Anonim
resim
resim

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

  1. Arduino.
  2. ekmek tahtası
  3. atlama telleri
  4. Kırmızı LED
  5. 2 basma düğmesi
  6. 2 adet 10k ohm direnç
  7. 2 220R direnç.
  8. Süper parlak Mavi LED.
  9. Piezo zili
  10. 16*2 LCD ekran

Adım 1: Her Şeyi Birlikte Kablolama

Her Şeyi Birlikte Kablolama
Her Şeyi Birlikte Kablolama

Şimdi her şeyi kablolaman gerekiyor

Adım 2: Nasıl Oynanır:

  1. Arduino'yu açın.
  2. LCD ekranda "oyun başlıyor" ve bir geri sayım yazmalıdır.
  3. Atlamak ve atış yapmak için düğmelerden birine basın.
  4. atladığınız her blok bir puan, yakaladığınız her * blok size 5 puan verir.
  5. 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

}

Önerilen: