Isi kandungan:
- Langkah 1: Senarai Komponen:
- Langkah 2: Sambungan Perkakasan
- Langkah 3: Pengaturcaraan
- Langkah 4: Hasil Percubaan
Video: NeoPixels Matrix : Permainan Ular: 4 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:07
Adakah anda masih ingat permainan ular yang kami mainkan di kotak permainan atau telefon bimbit kami semasa kecil? Hari ini kita akan belajar bagaimana membuat permainan ular dengan 8 * 8 NeoPixels Matrix. Kami memilih Arduino uno sebagai pusat kawalan dan modul breakout Joystick untuk mengawal ular.
Langkah 1: Senarai Komponen:
Perkakasan:
1 X Freaduino UNO Rev2.2 MB_EFUNO
1 X Fleksibel 64 RGB LED 8 * 8 NeoPixels Matrix
1 X modul breakout Joystick BKOUT_MD01
Garis Panduan 3 X
Perisian:
Arduino IDE
Langkah 2: Sambungan Perkakasan
Sambungkan NeoPixels ke pin D2.
"X" pada modul breakout Joystick menyambungkan pin A0 pada papan Arduino UNO, "Y" pin penyambung A1, "K" menyambung pin A2.
Langkah 3: Pengaturcaraan
P # sertakan
#define PIN 2 // Pin Output #define MAX_LED 64 // Kuantiti manik uint32_t c; int a = 0, nombor; char huan yang tidak ditandatangani = 0, ci = 0; char u yang tidak bertanda = 40; // Saiz fon kumpulan kata tidak ditandatangani char x = 0; Warna char yang tidak ditandatangani [3]; char unsigned = {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 lampu char yang tidak ditandatangani [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},}; watak char yang tidak ditandatangani [8] = // Tetapkan perkataan yang akan dihantar {{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 },}; markah paparan char yang tidak ditandatangani [8] [8]; int speedS = 400; // Kelajuan awal skor int ular; // Skor permainan int xValue; // JoyStick-X int yValue; // JoyStick-Y int zValue; // JoyStick-Z int FX, FY; // Koordinat makanan int SX, SY; // Koordinat kepala ular ke KUNCI, K; int Diaktifkan; // Aktifkan untuk memulakan semula permainan char sx [64]; // Koordinat badan am ular [64]; Adafruit_NeoPixel strip = Adafruit_NeoPixel (MAX_LED, PIN, NEO_RGB + NEO_KHZ800); batal RANDOM () {A: FX = rawak (0, 7); FY = rawak (0, 7); untuk (int i = 0; i <3 + skor; i ++) // Cegah paparan makanan pada badan ular {if (FX == sx && FY == sy ) goto A; }} batal myDelay (Waktu tidak ditandatangani) {// Dalam tempoh kelewatan pergerakan ular, kita harus melakukan sesuatu seperti makanan bergemerlapan dan membaca arah Joystick untuk (int t = 1; t 950 && KEY! = 5) { K = 8; } lain jika (yValue <50 && KEY! = 8) {K = 5; } lain jika (xValue 950 && KEY! = 4) {K = 6; }} // Di sini anda dapat membandingkan sama ada arah papan kekunci bertentangan dengan arah pergerakan ular. Sekiranya berlawanan, maka hentikan pad kekunci. / ************************************************* ************************************************** ************************************************** ************************************************** ******** / batal permainan () {// Setelah program Gameover dihentikan, tekan butang tengah untuk memulakan semula permainan. nilai char yang tidak ditandatangani, y; Warna [0] = rawak (3, 18); // Tetapkan warna. Parameter adalah R G B, julat 0-255. Warna [1] = rawak (3, 18); Warna [2] = rawak (3, 18); c = jalur. Warna (Warna [1], Warna [0], Warna [2]); nilai = skor / 10; nilai = nilai * 4; y = 0; untuk (number = value; number <value + 4; number ++) {for (unsigned char vertical = 0; vertical <8; vertical ++) {displaycore [y] [menegak] = watak [nombor] [menegak]; } y ++; } nilai = skor% 10; nilai = nilai * 4; untuk (number = value; number <value + 4; number ++) {for (unsigned char vertical = 0; vertical <8; vertical ++) {displaycore [y] [menegak] = watak [nombor] [menegak]; } y ++; } untuk (char unsigned horizontal = 0; horizontal <8; horizontal ++) {for (unsigned char vertical = 0; vertical <8; vertical ++) {if (displaycore [horizontal] [vertical] == 1) // Menentukan sama ada cahaya dihidupkan. {strip.setPixelColor (cahaya [mendatar] [menegak], c); } strip.setPixelColor yang lain (cahaya [mendatar] [menegak], 0); }} strip.show (); // Hantar kelewatan data (5000); K = 0; // Tetapkan semula arah Joystick sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Tetapkan semula skor koordinat ular = 0; // Tetapkan semula kelajuan skor permainanS = 400; // Kelajuan awal ular} penyediaan kosong () {Serial.begin (9600); // Memulakan perpustakaan strip.begin (); // Hantar data. Lalai warna setiap titik sebagai 0. Oleh itu setiap titik tidak diterangi pada awalnya. strip.show (); K = 0; // Tetapkan semula arah Joystick sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Tetapkan semula skor koordinat ular = 0; // Tetapkan semula skor permainan Warna [0] = rawak (3, 18); // Tetapkan warna. Parameter adalah R G B, julat 0-255. Warna [1] = rawak (3, 18); Warna [2] = rawak (3, 18); c = jalur. Warna (Warna [1], Warna [0], Warna [2]); // Hijau Merah Biru // Tetapkan warna untuk (number = 0; number <24; number ++) {strip.setPixelColor (go [number], c); } strip.show (); // Hantar data kelewatan (2000); RANDOM (); // Menghasilkan makanan} kekosongan bergerak () {KEY = K; // Setiap pergerakan ular membuat arah berubah sekali. if (KEY == 8) // Pergerakan ular ke atas {untuk (int i = 2 + skor; i> 0; i--) {sx = sx [i - 1]; sy = sy [i - 1]; } sy [0] = sy [0] - 1; if (sy [0] <0) // Melangkaui sempadan dan terus di seberang sy [0] = 7; } lain jika (KEY == 5) // Gerakan ke bawah ular {untuk (int i = 2 + skor; i> 0; i--) {sx = sx [i - 1]; sy = sy [i - 1]; } sy [0] = sy [0] + 1; if (sy [0]> 7) // Melangkaui sempadan dan terus di seberang sy [0] = 0; } lain jika (KEY == 4) // Pergerakan kiri ular {untuk (int i = 2 + skor; i> 0; i--) {sx = sx [i - 1]; sy = sy [i - 1]; } sx [0] = sx [0] - 1; if (sx [0] <0) // Melangkaui sempadan dan teruskan di seberang sx [0] = 7; } lain jika (KEY == 6) // Gerakan kanan ular {untuk (int i = 2 + skor; i> 0; i--) {sx = sx [i - 1]; sy = sy [i - 1]; } sx [0] = sx [0] + 1; if (sx [0]> 7) // Melangkaui sempadan dan terus di sisi lain sx [0] = 0; } // Gerakkan badan ular dengan butang} paparan kosong () {untuk (number = 0; number <64; number ++) // Kosongkan skrin {strip.setPixelColor (number, 0); } strip.show (); Warna [0] = 40; // Tetapkan warna. Parameter adalah R G B, julat 0-255. Warna [1] = 0; Warna [2] = 0; c = jalur. Warna (Warna [1], Warna [0], Warna [2]); // Hijau Merah Biru // Tetapkan warna x = cahaya [FX] [FY]; // Paparkan jalur makanan.setPixelColor (x, c); Warna [0] = rawak (3, 18); // Tetapkan warna. Parameter adalah R G B, julat 0-255. Warna [1] = rawak (3, 18); Warna [2] = rawak (3, 18); c = jalur. Warna (Warna [1], Warna [0], Warna [2]); // Hijau Merah Biru // Tetapkan warna untuk (int i = 2 + skor; i> 0; i--) // Paparkan badan ular {x = cahaya [sx [sy ; strip.setPixelColor (x, c); } Warna [0] = 0; // Tetapkan warna. Parameter adalah R G B, julat 0-255. Warna [1] = 40; Warna [2] = 0; c = jalur. Warna (Warna [1], Warna [0], Warna [2]); // Hijau Merah Biru // Tetapkan warna x = cahaya [sx [0] [sy [0]; // Paparkan jalur kepala ular.setPixelColor (x, c); strip.show (); // Hantar data} gelung kosong () {mudah alih (); myDelay (speedS); // Dalam () adalah masa kelewatan. paparan (); SX = sx [0]; SY = sy [0]; // Dapatkan koordinat kepala ular untuk (int i = 1; i <= 2 + skor; i ++) {if (SX == sx && SY == sy ) gameover (); } // Hakim sama ada kepala ular menyentuh badannya. Sekiranya disentuh, teruskan ke GameOver. jika (SY == FY && SX == FX) {RANDOM (); skor ++; Warna [0] = 40; // Tetapkan warna. Parameter adalah R G B, julat 0-255. Warna [1] = 0; Warna [2] = 0; c = jalur. Warna (Warna [1], Warna [0], Warna [2]); // Hijau Merah Biru // Tetapkan warna x = cahaya [FX] [FY]; // Paparkan jalur makanan.setPixelColor (x, c); strip.show (); // Hantar data jika (! (skor% 5)) {// Mempercepat kelajuan ular mengikut skor. Setiap 5 makanan dimakan, suhu 100ms. speedS = speedS - 50; if (speedS <150) // Had bawah adalah 200ms. Sekiranya kelajuan lebih rendah daripada 200ms, kelajuan tetap 200ms. kelajuanS = 150; }} // Hakim sama ada makanan dimakan. Sekiranya ular makan makanan, maka tambah skor dan buat semula makanan secara rawak. }
Keputusan Eksperimen
Langkah 4: Hasil Percubaan
Bacaan relatif:
Kereta Bluetooth FreaksBot
Nyalakan Manik Pertama pada 8 * 8 NeoPixels Matrix dengan Arduino
Mikro: bit Percubaan 05: RGB LED - Elecfreaks Mirco: bit Starter Kit Course
Pos Produk Jumaat: Kit Pematerian Paparan Spektrum Frekuensi Muzik LED
Gunakan ElecFreaks Micro: bit Tinker Kit untuk Membuat Lampu Pintar
Disyorkan:
Permainan Dinosaur Hack Permainan Google Chrome: 9 Langkah
Permainan Dinosaur Hack Google Chrome Games: chrome t-rex run adalah permainan yang sangat menyeronokkan. Di sini kita akan menjadikannya lebih menghiburkan dengan menggunakan Arduino. Permainan dino ini tidak akan muncul di laman sambungan internet. Anda juga boleh melakukannya dengan menggunakan raspberry pi di sini kita membandingkan kedua papan secara terperinci Arduino
Pengawal Permainan DIY Berasaskan Arduino - Pengawal Permainan Arduino PS2 - Bermain Tekken Dengan Gamepad Arduino DIY: 7 Langkah
Pengawal Permainan DIY Berasaskan Arduino | Pengawal Permainan Arduino PS2 | Bermain Tekken Dengan Gamepad Arduino DIY: Hai kawan-kawan, bermain permainan selalu menyeronokkan tetapi bermain dengan permainan peribadi DIY Controller anda lebih menggembirakan. Oleh itu, kami akan menjadikan Pengawal permainan menggunakan arduino pro micro dalam arahan ini
Permainan Ular: 4 Langkah
Snake Game: Hello Guys, Hari ini saya akan menunjukkan kepada anda bagaimana membuat permainan ular asas di Python dan memukau rakan-rakan dalam percutian ini. Ini sangat mudah yang anda perlukan hanyalah pemasangan python 3 dan pygame. Dalam arahan ini saya telah menambahkan video mengenai cara memasang permainan pygame. Selepas
Permainan Ular OLED Arduino: 3 Langkah
Arduino OLED Snake Game: Hai dan selamat datang, kepada instruksional kami tentang cara membuat dan arduino OLED Game, projek ini bermula ketika kami berusaha untuk membuat permainan pertama kami dengan arduino, soooo, kami fikir di mana lebih baik untuk memulakan daripada nokia Ular klasik (baik sekurang-kurangnya
Permainan Ular dalam C: 8 Langkah
Game of Snake in C: Snake game memang terkenal di telefon bimbit lama yang dapat dengan mudah dihancurkan menggunakan program c. Untuk membina projek ini, anda memerlukan pemahaman asas mengenai sintaksis c. Contoh: untuk gelung, sementara gelung, dan lain-lain. Dengan membina projek permainan jenis ini, program anda