İçindekiler:
Video: NeoPixels Matrix:Yılan Oyunu: 4 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
Çocukluğumuzda oyun kutumuzda veya cep telefonumuzda oynadığımız yılan oyununu hala hatırlıyor musunuz? Bugün 8*8 NeoPixels Matrix ile yılan oyunu yapmayı öğreneceğiz. Kontrol merkezi olarak Arduino uno'yu ve yılanı kontrol etmek için Joystick koparma modülünü seçiyoruz.
Adım 1: Bileşenler Listesi:
Donanım:
1 X Freaduino UNO Rev2.2 MB_EFUNO
1 X Esnek 64 RGB LED 8*8 NeoPiksel Matrisi
1 X Joystick koparma modülü BKOUT_MD01
3 X Kılavuz Çizgisi
Yazılım:
Arduino IDE'si
2. Adım: Donanım Bağlantısı
NeoPixels'i D2 pinine bağlayın.
Joystick koparma modülündeki "X", Arduino UNO kartındaki A0 pinini bağlayın, "Y" pin A1, "K" pin A2'yi bağlayın.
Adım 3: Programlama
P#dahil
#define PIN 2 //Çıkış Pimi #define MAX_LED 64 //Bead miktarı uint32_t c; int a = 0, sayı; işaretsiz char huan = 0, ci = 0; imzasız karakter u = 40; //kelime grubunun yazı tipi boyutu unsigned char x = 0; imzasız karakter Renk[3]; imzasız karakter git = {2, 3, 4, 5, 9, 14, 17, 20, 22, 26, 27, 29, 34, 35, 36, 37, 41, 46, 49, 54, 58, 59, 60, 61}; //24 unsigned char light[8][8] = { {0, 1, 2, 3, 4, 5, 6, 7}, {15, 14, 13, 12, 11, 10, 9, 8}, {16, 17, 18, 19, 20, 21, 22, 23}, {31, 30, 29, 28, 27, 26, 25, 24}, {32, 33, 34, 35, 36, 37, 38, 39}, {47, 46, 45, 44, 43, 42, 41, 40}, {48, 49, 50, 51, 52, 53, 54, 55}, {63, 62, 61, 60, 59, 58, 57, 56}, }; unsigned char karakter[8] = //Gönderilecek kelimeyi ayarla { {0, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 0, 0, 0, 1, 0, 0}, // 0 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, // 1 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 1, 1, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 2 {0, 1, 1, 1, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 3 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0}, // 4 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 0, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 5 {0, 1, 0, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 6 {0, 1, 0, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0}, // 7 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 8 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 0, 1, 0, 0}, {0, 1, 0, 1, 0, 1, 0, 0}, // 9 {0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0 }, }; unsigned char displaycore [8][8]; int hızS = 400; // Yılanın başlangıç hızı int puanı; // Oyun puanı int xValue; // JoyStick-X int yValue; // JoyStick-Y int zValue; // JoyStick-Z int FX, FY; // Gıda koordinatı int SX, SY; // Yılan başının koordinatı int KEY, K; int Etkin; // Oyunu yeniden başlatmayı etkinleştir char sx[64]; //Yılan gövdesi char koordinatı sy[64]; Adafruit_NeoPixel şeridi = Adafruit_NeoPixel(MAX_LED, PIN, NEO_RGB + NEO_KHZ800); void RANDOM() { A: FX = rastgele(0, 7); FY = rastgele(0, 7); for (int i = 0; i < 3 + puan; i++) //Yılan gövdesinde yiyecek gösterimini engelle { if (FX == sx && FY == sy) goto A; } } void myDelay(unsigned int Time) { // Yılan hareketinin gecikme süresi boyunca, yiyecek parıltısı gibi bir şey yapmamız ve Joystick'in yönünü (int t = 1; t 950 && KEY != 5) için okumamız gerekiyor. K = 8; } else if (yValue < 50 && KEY != 8) { K = 5; } else if (xValue 950 && KEY != 4) { K = 6; } } // Burada tuş takımının yönünün yılan hareket yönünün tersi olup olmadığını karşılaştırabilirsiniz. Ters ise, tuş takımını bırakın. /******************************************************** ******************************************************* ************************************************************ ******************************************************* ********/ void gameover() { // Gameover programı durduğunda, oyunu yeniden başlatmak için ortadaki düğmeye basın. işaretsiz karakter değeri, y; Renk[0] = rastgele(3, 18); // Renk ayarla. Parametre R G B, 0-255 aralığı. Renk[1] = rastgele(3, 18); Renk[2] = rastgele(3, 18); c = strip. Color(Renk[1], Renk[0], Renk[2]); değer = puan / 10; değer = değer * 4; y = 0; for (sayı = değer; sayı < değer + 4; sayı++) { for (unsigned char dikey = 0; dikey < 8; dikey++) { displaycore[y][dikey] = karakter[sayı][dikey]; } y++; } değer = puan % 10; değer = değer * 4; for (sayı = değer; sayı < değer + 4; sayı++) { for (unsigned char dikey = 0; dikey < 8; dikey++) { displaycore[y][dikey] = karakter[sayı][dikey]; } y++; } for (unsigned char yatay = 0; yatay < 8; yatay++) { for (unsigned char dikey = 0; dikey < 8; dikey++) { if (displayscore[yatay][dikey] == 1) //Işık olup olmadığına karar verin açık. { strip.setPixelColor(hafif[yatay][dikey], c); } else strip.setPixelColor(hafif[yatay][dikey], 0); } } strip.show();//Veri gecikmesi gönder(5000); K = 0; // Joystick yönünü sıfırla sx[0] = 2; sx[1] = 1; sx[2] = 0; sy[0] = 1; sy[1] = 1; sy[2] = 1; // Yılan koordinat puanını sıfırla = 0; // Oyun puanı hızını sıfırlaS = 400; // Yılanın ilk hızı } void setup() { Serial.begin(9600); // Kitaplığı başlat strip.begin(); // Veri gönder. Her noktanın rengini varsayılan olarak 0 olarak ayarlayın. Yani başlangıçta her nokta aydınlatılmaz. şerit.göster(); K = 0; // Joystick yönünü sıfırla sx[0] = 2; sx[1] = 1; sx[2] = 0; sy[0] = 1; sy[1] = 1; sy[2] = 1; // Yılan koordinat puanını sıfırla = 0; // Oyun puanını sıfırla Renk[0] = rastgele(3, 18); // Renk ayarla. Parametre R G B, 0-255 aralığı. Renk[1] = rastgele(3, 18); Renk[2] = rastgele(3, 18); c = strip. Color(Renk[1], Renk[0], Renk[2]); //Yeşil Kırmızı Mavi // için rengi ayarla (sayı = 0; sayı <24; sayı++) { strip.setPixelColor(go[sayı], c); } strip.show();// Veri gecikmesi gönder(2000); RASTGELE(); //Yiyecek üret } void mobile() { ANAHTAR = K; //Yılanın her hareketi bir kez yön değiştirir. if (ANAHTAR == 8) // Yukarı yılan hareketi { for (int i = 2 + puan; i> 0; i--) { sx = sx[i - 1]; sy = sy[i - 1]; } sy[0] = sy[0] - 1; if (sy[0] <0) // Sınırın ötesine geçin ve diğer taraftan devam edin sy[0] = 7; } else if (ANAHTAR == 5) // Yılan aşağı doğru hareket { for (int i = 2 + puan; i> 0; i--) { sx = sx[i - 1]; sy = sy[i - 1]; } sy[0] = sy[0] + 1; if (sy[0] > 7) // Sınırın ötesine geçin ve diğer taraftan devam edin sy[0] = 0; } else if (ANAHTAR == 4) // Yılan sola hareket { for (int i = 2 + puan; i > 0; i--) { sx = sx[i - 1]; sy = sy[i - 1]; } sx[0] = sx[0] - 1; if (sx[0] <0) // Sınırın ötesine geçin ve diğer taraftan devam edin sx[0] = 7; } else if (ANAHTAR == 6) // Sağa yılan hareketi { for (int i = 2 + puan; i> 0; i--) { sx = sx[i - 1]; sy = sy[i - 1]; } sx[0] = sx[0] + 1; if (sx[0] > 7) // Sınırın ötesine geçin ve diğer taraftan devam edin sx[0] = 0; } // Yılan gövdesini düğme ile hareket ettirin } void display() { for (sayı = 0; sayı <64; sayı++) //Ekranı temizle { strip.setPixelColor(sayı, 0); } şerit.göster(); Renk[0] = 40; // Rengi ayarla. Parametre R G B, 0-255 aralığı. Renk[1] = 0; Renk[2] = 0; c = strip. Color(Renk[1], Renk[0], Renk[2]); //Yeşil Kırmızı Mavi // Rengi ayarla x = açık[FX][FY]; //Yiyecek şeridini göster.setPixelColor(x,c); Renk[0] = rastgele(3, 18); // Rengi ayarla. Parametre R G B, 0-255 aralığı. Renk[1] = rastgele(3, 18); Renk[2] = rastgele(3, 18); c = strip. Color(Renk[1], Renk[0], Renk[2]); //Yeşil Kırmızı Mavi // için rengi ayarla (int i = 2 + puan; i> 0; i--) //Yılan gövdesini göster { x = light[sx[sy; strip.setPixelColor(x,c); } Renk[0] = 0; // Rengi ayarla. Parametre R G B, 0-255 aralığı. Renk[1] = 40; Renk[2] = 0; c = strip. Color(Renk[1], Renk[0], Renk[2]); //Yeşil Kırmızı Mavi // Rengi ayarla x = ışık[sx[0][sy[0]; //Yılan başı şeridini göster.setPixelColor(x,c); strip.show();//Veri gönder } void loop() { mobile(); myDelay(hızS); // İçinde() gecikme süresidir. görüntüler(); SX = sx[0]; SY = sy[0]; // (int i = 1; i <= 2 + puan; i++) için yılan başının koordinatını alın { if (SX == sx && SY == sy) gameover(); } // Yılanın başının vücuduna değip değmediğini değerlendirin. Dokunulursa GameOver'a iletin. if (SY == FY && SX == FX) { RANDOM(); puan ++; Renk[0] = 40; // Rengi ayarla. Parametre R G B, 0-255 aralığı. Renk[1] = 0; Renk[2] = 0; c = strip. Color(Renk[1], Renk[0], Renk[2]); //Yeşil Kırmızı Mavi // Rengi ayarla x = açık[FX][FY]; //Yiyecek şeridini göster.setPixelColor(x,c); strip.show();//Veri gönder if (!(puan % 5)) { // Skora göre yılan hızını hızlandır. Yenilen her 5 gıda 100ms hızlanır. hızS = hızS - 50; if (speedS < 150) // Alt limit 200ms'dir. Hız 200ms'den düşükse, hız 200ms olarak kalır. hızS = 150; } } // Yiyeceklerin yenip yenilmediğine karar verin. Yılan yemek yerse, artı puan alır ve yiyecekleri rastgele yeniler. }
Deney Sonucu
4. Adım: Deney Sonucu
Göreceli Okumalar:
FreaksBot Bluetooth Araba
Arduino ile 8*8 NeoPixels Matrix'te İlk Boncuk'u Işıklandırın
Micro:bit Experiment 05: RGB LED -- Elecfreaks Mirco: bit Başlangıç Seti Kursu
Cuma Ürün Gönderisi: LED Müzik Frekans Spektrum Ekran Lehimleme Kiti
Akıllı Bir Işık Oluşturmak için ElecFreaks Micro:bit Tinker Kit'i kullanın
Önerilen:
3D Baskılı Yılan Robot: 7 Adım (Resimlerle)
3D Baskılı Yılan Robot: 3D yazıcımı aldığımda onunla ne yapabilirim diye düşünmeye başladım. Bir sürü şey bastım ama 3D baskı kullanarak bütün bir yapı yapmak istedim. Sonra robot hayvan yapmayı düşündüm. İlk fikrim bir köpek ya da örümcek yapmaktı, ama
Yılan: Yararsız Makine: 5 Adım
Yılan: Yararsız Makine: Çocukken Nokia'nızda yılan oynadığınızı biliyor muydunuz? Belli bir noktada yılan kendi kuyruğunu kovalamaya başlayacaktı ve işte o zaman oyunun bitmek üzere olduğunu anladınız. Bunu bir robot haline getirmeye karar verdik, ancak oyun asla
Yılan Oyunu: 4 Adım
Snake Game: Merhaba Arkadaşlar, Bugün sizlere Python'da nasıl basit bir yılan oyunu yapılacağını ve bu tatilde arkadaşlarınızı şaşırtmayı göstereceğim. Bu çok basit, ihtiyacınız olan sadece python 3 ve pygame kurulumu. Bu talimatta, pygame'in nasıl kurulacağına dair video ekledim. Sonrasında
Arduino OLED Yılan Oyunu: 3 Adım
Arduino OLED Yılan Oyunu: Merhaba ve arduino OLED Oyununun nasıl yapılacağına dair talimatlarımıza hoş geldiniz, bu proje bir arduino ile ilk oyunumuzu yapmaya çalışırken ortaya çıktı, soooo, nokia'dan daha iyi nereden başlayacağımızı düşündük klasik Yılan (en azından
C'de Yılan Oyunu: 8 Adım
Game of Snake in C: Snake oyunu eski cep telefonlarında popülerdi ve c programı kullanılarak çok kolay bir şekilde geliştirilebiliyordu. Bu projeyi oluşturmak için c sözdizimini temel düzeyde anlamanız gerekir. Örnek: for döngüsü, while döngüsü, vb. Bu tür bir oyun oluştururken programınızı projelendirin