Daftar Isi:
- Langkah 1: Daftar Komponen:
- Langkah 2: Koneksi Perangkat Keras
- Langkah 3: Pemrograman
- Langkah 4: Hasil Eksperimen
Video: Matriks NeoPixels Game Ular: 4 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:54
Apakah Anda masih ingat permainan ular yang kami mainkan di kotak permainan atau ponsel kami selama masa kecil kami? Hari ini kita akan belajar cara membuat game ular dengan 8*8 NeoPixels Matrix. Kami memilih Arduino uno sebagai pusat kendali dan modul pelarian Joystick untuk mengendalikan ular.
Langkah 1: Daftar Komponen:
Perangkat keras:
1 X Freduino UNO Rev2.2 MB_EFUNO
1 X Fleksibel 64 RGB LED 8*8 NeoPixels Matrix
1 X modul pelarian Joystick BKOUT_MD01
3 X Garis Panduan
Perangkat lunak:
Arduino IDE
Langkah 2: Koneksi Perangkat Keras
Hubungkan NeoPixels ke pin D2.
"X" pada modul joystick breakout sambungkan pin A0 pada board Arduino UNO, "Y" sambungkan pin A1, "K" sambungkan pin A2.
Langkah 3: Pemrograman
P#sertakan
#define PIN 2 //Output Pin #define MAX_LED 64 //Jumlah manik uint32_t c; int a = 0, bilangan; char huan yang tidak ditandatangani = 0, ci = 0; unsigned char u = 40; //Ukuran font grup kata unsigned char x = 0; Warna karakter yang tidak ditandatangani[3]; unsigned char go = {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 character[8] = //Mengatur kata yang akan dikirim { {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 kecepatanS = 400; // Kecepatan awal skor int ular; // Skor permainan int xValue; // JoyStick-X int yValue; // JoyStick-Y int zNilai; // JoyStick-Z int FX, FY; // Koordinat makanan int SX, SY; // Koordinat kepala ular int KEY, K; int Diaktifkan; // Aktifkan untuk memulai ulang game char sx[64]; //Koordinat karakter tubuh ular[64]; Adafruit_NeoPixel strip = Adafruit_NeoPixel(MAX_LED, PIN, NEO_RGB + NEO_KHZ800); void RANDOM() { A: FX = acak(0, 7); FY = acak(0, 7); for (int i = 0; i < 3 + score; i++) //Mencegah tampilan makanan pada tubuh ular { if (FX == sx && FY == sy) goto A; } } void myDelay(unsigned int Time) { // Selama periode delay pergerakan ular, kita harus melakukan sesuatu seperti food glitter dan membaca arah Joystick untuk (int t = 1; t 950 && KEY != 5) { K = 8; } else if (yNilai < 50 && KUNCI != 8) { K = 5; } else if (xValue 950 && KUNCI != 4) { K = 6; } } // Di sini Anda dapat membandingkan apakah arah keypad berlawanan dengan arah gerakan ular. Jika sebaliknya, maka lepaskan keypad. /************************************************* ************************************************** ************************************************** ************************************************** ********/ void gameover() { // Setelah program Gameover berhenti, tekan tombol tengah untuk memulai kembali game. nilai karakter yang tidak ditandatangani, y; Warna[0] = acak(3, 18); // Atur warna. Parameter adalah R G B, rentang 0-255. Warna[1] = acak(3, 18); Warna[2] = acak(3, 18); c = strip. Warna(Warna[1], Warna[0], Warna[2]); nilai = skor / 10; nilai = nilai * 4; y = 0; for (angka = nilai; angka < nilai + 4; angka++) { for (unsigned char vertikal = 0; vertikal < 8; vertikal++) { displaycore[y][vertikal] = karakter[angka][vertikal]; } y++; } nilai = skor % 10; nilai = nilai * 4; for (angka = nilai; angka < nilai + 4; angka++) { for (unsigned char vertikal = 0; vertikal < 8; vertikal++) { displaycore[y][vertikal] = karakter[angka][vertikal]; } y++; } for (unsigned char horizontal = 0; horizontal < 8; horizontal++) { for (unsigned char vertikal = 0; vertikal < 8; vertikal++) { if (displayscore[horizontal][vertical] == 1) //Menilai apakah cahaya aktif. { strip.setPixelColor(cahaya[horizontal][vertikal], c); } else strip.setPixelColor(cahaya[horizontal][vertikal], 0); } } strip.show();//Kirim data delay(5000); K = 0; // Atur ulang arah Joystick sx[0] = 2; sx[1] = 1; sx[2] = 0; sy[0] = 1; sy[1] = 1; sy[2] = 1; // Atur ulang skor koordinat ular = 0; // Setel ulang kecepatan skor gameS = 400; // Kecepatan awal ular } void setup() { Serial.begin(9600); // Inisialisasi strip perpustakaan.begin(); // Kirim data. Default warna setiap titik sebagai 0. Jadi setiap titik tidak menyala di awal. strip.tampilkan(); K = 0; // Atur ulang arah Joystick sx[0] = 2; sx[1] = 1; sx[2] = 0; sy[0] = 1; sy[1] = 1; sy[2] = 1; // Atur ulang skor koordinat ular = 0; // Setel ulang skor permainan Warna[0] = acak(3, 18); // Atur warna. Parameter adalah R G B, rentang 0-255. Warna[1] = acak(3, 18); Warna[2] = acak(3, 18); c = strip. Warna(Warna[1], Warna[0], Warna[2]); //Hijau Merah Biru // Atur warna untuk (angka = 0; angka <24; angka++) { strip.setPixelColor(go[angka], c); } strip.show();// Kirim data delay(2000); ACAK(); //Menghasilkan makanan } void mobile() { KEY = K; //Setiap gerakan ular membuat arah berubah sekali. if (KEY == 8) // Gerakan ular ke atas { for (int i = 2 + skor; i> 0; i--) { sx = sx[i - 1]; sy = sy[i - 1]; } sy[0] = sy[0] - 1; if (sy[0] <0) // Melewati batas dan melanjutkan ke sisi lain sy[0] = 7; } else if (KEY == 5) // Gerakan ular ke bawah { for (int i = 2 + skor; i> 0; i--) { sx = sx[i - 1]; sy = sy[i - 1]; } sy[0] = sy[0] + 1; if (sy[0] > 7) // Melampaui batas dan melanjutkan ke sisi lain sy[0] = 0; } else if (KEY == 4) // Gerakan ke kiri ular { for (int i = 2 + skor; i > 0; i--) { sx = sx[i - 1]; sy = sy[i - 1]; } sx[0] = sx[0] - 1; if (sx[0] <0) // Melampaui batas dan melanjutkan ke sisi lain sx[0] = 7; } else if (KEY == 6) // Gerakan ke kanan ular { for (int i = 2 + skor; i> 0; i--) { sx = sx[i - 1]; sy = sy[i - 1]; } sx[0] = sx[0] + 1; if (sx[0] > 7) // Melampaui batas dan melanjutkan ke sisi lain sx[0] = 0; } // Gerakkan tubuh ular dengan tombol } void display() { for (angka = 0; angka <64; angka++) //Hapus layar { strip.setPixelColor(angka, 0); } strip.tampilkan(); Warna[0] = 40; // Setel warna. Parameternya adalah R G B, rentang 0-255. Warna[1] = 0; Warna[2] = 0; c = strip. Warna(Warna[1], Warna[0], Warna[2]); //Hijau Merah Biru // Setel warna x = cahaya[FX][FY]; //Menampilkan strip makanan.setPixelColor(x, c); Warna[0] = acak(3, 18); // Setel warna. Parameternya adalah R G B, rentang 0-255. Warna[1] = acak(3, 18); Warna[2] = acak(3, 18); c = strip. Warna(Warna[1], Warna[0], Warna[2]); //Hijau Merah Biru // Mengatur warna untuk (int i = 2 + skor; i> 0; i--) //Menampilkan tubuh ular { x = light[sx[sy; strip.setPixelColor(x, c); } Warna[0] = 0; // Setel warna. Parameternya adalah R G B, rentang 0-255. Warna[1] = 40; Warna[2] = 0; c = strip. Warna(Warna[1], Warna[0], Warna[2]); //Hijau Merah Biru // Setel warna x = cahaya[sx[0][sy[0]; //Menampilkan strip kepala ular.setPixelColor(x, c); strip.show();//Kirim data } void loop() { mobile(); myDelay(kecepatanS); // Dalam() adalah waktu tunda. menampilkan(); SX = sx[0]; SY = sy[0]; // Dapatkan koordinat kepala ular untuk (int i = 1; i <= 2 + skor; i++) { if (SX == sx && SY == sy) gameover(); } // Nilai apakah kepala ular menyentuh tubuhnya. Jika disentuh, maka teruskan ke GameOver. if (SY == FY && SX == FX) { RANDOM(); skor ++; Warna[0] = 40; // Setel warna. Parameternya adalah R G B, rentang 0-255. Warna[1] = 0; Warna[2] = 0; c = strip. Warna(Warna[1], Warna[0], Warna[2]); //Hijau Merah Biru // Setel warna x = terang[FX][FY]; //Menampilkan strip makanan.setPixelColor(x, c); strip.show();//Kirim data if (!(skor % 5)) { // Percepat kecepatan ular sesuai dengan skor. Setiap 5 makanan yang dimakan, percepat 100ms. kecepatanS = kecepatanS - 50; if (speedS < 150) // Batas bawah adalah 200ms. Jika kecepatan lebih rendah dari 200ms, kecepatan tetap 200ms. kecepatan S = 150; } } // Menilai apakah makanan sudah dimakan. Jika ular memakan makanan, maka nilai plus dan regenerasi makanan secara acak. }
Hasil Eksperimen
Langkah 4: Hasil Eksperimen
Bacaan Relatif:
Mobil Bluetooth FreaksBot
Nyalakan Manik Pertama pada 8*8 NeoPixels Matrix dengan Arduino
Mikro:bit Eksperimen 05: LED RGB -- Elefreaks Mirco: Kursus Kit Pemula bit
Posting Produk Jumat: Kit Solder Tampilan Spektrum Frekuensi Musik LED
Gunakan ElecFreaks Micro:bit Tinker Kit untuk Membuat Lampu Cerdas
Direkomendasikan:
Robot Ular Cetak 3D: 7 Langkah (dengan Gambar)
Robot Ular Cetak 3D: Ketika saya mendapatkan printer 3D saya, saya mulai berpikir apa yang bisa saya buat dengannya. Saya mencetak banyak hal tetapi saya ingin membuat keseluruhan konstruksi menggunakan pencetakan 3D. Kemudian saya berpikir untuk membuat robot hewan. Ide pertama saya adalah membuat anjing atau laba-laba, tetapi banyak
Ular: Mesin Tidak Berguna: 5 Langkah
Snake: the Useless Machine: Anda tahu ketika Anda masih kecil dan Anda biasa bermain ular di Nokia Anda? Pada titik tertentu ular akan mulai mengejar ekornya sendiri, dan saat itulah Anda tahu bahwa permainan akan segera berakhir. Kami memutuskan untuk membuatnya menjadi robot, hanya saja, game tidak pernah
Game Ular: 4 Langkah
Game Ular: Halo Guys, Hari ini saya akan menunjukkan cara membuat permainan ular dasar dengan Python dan memukau teman-teman di liburan ini. Ini sangat sederhana, Anda hanya perlu python 3 dan pygame install. Dalam instruksi ini saya telah menambahkan video tentang cara menginstal pygame. Setelah
Game Ular OLED Arduino: 3 Langkah
Game Ular OLED Arduino: Hai dan selamat datang, untuk instruksi kami tentang cara membuat dan Game OLED arduino, proyek ini muncul ketika kami mencoba membuat game pertama kami dengan arduino, soooo, kami pikir di mana lebih baik untuk memulai daripada nokia Ular klasik (setidaknya
Game Ular di C: 8 Langkah
Game of Snake di C: Game Snake populer di ponsel lama yang dapat dengan mudah didevolusikan menggunakan program c. Untuk membangun proyek ini, Anda memerlukan pemahaman dasar tentang sintaks c. Contoh: for loop, while loop, dll. Dengan membangun jenis game ini, memproyeksikan program Anda