Turinys:

„NeoPixels Matrix“ir „Snake“žaidimas: 4 žingsniai
„NeoPixels Matrix“ir „Snake“žaidimas: 4 žingsniai

Video: „NeoPixels Matrix“ir „Snake“žaidimas: 4 žingsniai

Video: „NeoPixels Matrix“ir „Snake“žaidimas: 4 žingsniai
Video: Snake Game Using Arduino And Dot Matrix Display #shorts 2024, Liepa
Anonim
„NeoPixels Matrix“, „Gyvačių žaidimas“
„NeoPixels Matrix“, „Gyvačių žaidimas“

Ar dar prisimenate žaidimą su gyvatėmis, kurį vaikystėje žaidėme žaidimo dėžutėje ar mobiliajame telefone? Šiandien mes išmoksime sukurti žaidimą su gyvatėle naudojant 8*8 „NeoPixels Matrix“. Mes pasirenkame „Arduino uno“kaip valdymo centrą ir „Joystick“išjungimo modulį gyvatei valdyti.

1 žingsnis: komponentų sąrašas:

Techninė įranga:

1 X Freaduino UNO Rev.2.2 MB_EFUNO

1 X lankstus 64 RGB šviesos diodas 8*8 „NeoPixels Matrix“

1 X Joystick breakout modulis BKOUT_MD01

3 X orientacinė linija

Programinė įranga:

„Arduino IDE“

2 žingsnis: aparatinės įrangos prijungimas

Prijunkite „NeoPixels“prie kaiščio D2.

„X“kreiptuko išjungimo modulyje prijunkite kaištį A0 prie „Arduino UNO“plokštės, „Y“- kaištį A1, „K“- kaištį A2.

3 žingsnis: programavimas

P#įtraukti

#define PIN 2 // Išvesties kaištis #define MAX_LED 64 // granulių kiekis uint32_t c; int a = 0, skaičius; nepasirašytas char huan = 0, ci = 0; nepasirašyta char u = 40; // Žodžių grupės šrifto dydis unsigned char x = 0; nepasirašyta char Spalva [3]; nepasirašytas simbolis = {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 nepasirašyti žibintai [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] = // Nustatykite siunčiamą žodį {{0, 1, 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 },}; nepasirašytas simbolių rodymo rezultatas [8] [8]; int greitisS = 400; // Pradinis gyvatės greitis int rezultatas; // Žaidimo rezultatas int xValue; // „JoyStick-X int yValue“; // JoyStick-Y int zValue; // JoyStick-Z int FX, FY; // Maisto koordinatė int SX, SY; // Gyvatės galvos koordinatė int KEY, K; int Įgalinta; // Įgalinti iš naujo paleisti žaidimą char sx [64]; // Gyvatės kūno koordinatė char sy [64]; Adafruit_NeoPixel strip = Adafruit_NeoPixel (MAX_LED, PIN, NEO_RGB + NEO_KHZ800); void RANDOM () {A: FX = atsitiktinis (0, 7); FY = atsitiktinis (0, 7); for (int i = 0; i <3+score; i ++) // Neleisti maisto rodyti gyvatės kūne {if (FX == sx && FY == sy ) goto A; }} void myDelay (unsigned int Time) {// Gyvatės judėjimo atidėjimo laikotarpiu turime padaryti kažką panašaus į maisto blizgesį ir perskaityti „Joystick“kryptį (int t = 1; t 950 && KEY! = 5) { K = 8; } else if (yValue <50 && KEY! = 8) {K = 5; } else if (xVertybė 950 && KEY! = 4) {K = 6; }} // Čia galite palyginti, ar klaviatūros kryptis yra priešinga gyvatės judėjimo krypčiai. Jei yra priešingai, atsisakykite klaviatūros. /************************************************ ************************************************* ************************************************* ************************************************* ********/ void gameover () {// Sustabdžius „Gameover“programą, paspauskite centrinį mygtuką, kad iš naujo paleistumėte žaidimą. nepasirašyta simbolių vertė, y; Spalva [0] = atsitiktinė (3, 18); // Nustatykite spalvą. Parametras yra R G B, diapazonas 0–255. Spalva [1] = atsitiktinė (3, 18); Spalva [2] = atsitiktinė (3, 18); c = juostelė. Spalva (spalva [1], spalva [0], spalva [2]); vertė = rezultatas / 10; vertė = vertė * 4; y = 0; for (skaičius = vertė; skaičius <vertė+4; skaičius ++) {už (nepasirašytas simbolis vertikalus = 0; vertikalus <8; vertikalus ++) {displaycore [y] [vertical] = simbolis [skaičius] [vertikalus]; } y ++; } vertė = balas % 10; vertė = vertė * 4; for (skaičius = vertė; skaičius <vertė+4; skaičius ++) {už (nepasirašytas simbolis vertikalus = 0; vertikalus <8; vertikalus ++) {displaycore [y] [vertical] = simbolis [skaičius] [vertikalus]; } y ++; } for (unsigned char horizontal horizontal = 0; horizontalus <8; horizontalus ++) {for (unsigned char vertical = 0; vertikalus <8; vertikalus ++) {if (displaycore [horizontalus] [vertikalus] == 1) // Nuspręskite, ar šviesa yra įjungtas. {strip.setPixelColor (šviesus [horizontalus] [vertikalus], c); } else strip.setPixelColor (šviesus [horizontalus] [vertikalus], 0); }} strip.show (); // Duomenų siuntimo uždelsimas (5000); K = 0; // Iš naujo nustatyti vairasvirtės kryptį sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Iš naujo nustatyti gyvatės koordinačių balą = 0; // Iš naujo nustatyti žaidimo rezultatą speedS = 400; // Pradinis gyvatės greitis} void setup () {Serial.begin (9600); // Inicijuoti bibliotekos juostą.begin (); // Siųsti duomenis. Numatytoji kiekvieno taško spalva yra 0. Taigi kiekvienas taškas pradžioje nėra apšviestas. strip.show (); K = 0; // Iš naujo nustatyti vairasvirtės kryptį sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Iš naujo nustatyti gyvatės koordinačių balą = 0; // Iš naujo nustatyti žaidimo rezultatą Spalva [0] = atsitiktinė (3, 18); // Nustatykite spalvą. Parametras yra R G B, diapazonas 0–255. Spalva [1] = atsitiktinė (3, 18); Spalva [2] = atsitiktinė (3, 18); c = juostelė. Spalva (spalva [1], spalva [0], spalva [2]); // Žalia Raudona Mėlyna // Nustatykite spalvą (skaičius = 0; skaičius <24; skaičius ++) {strip.setPixelColor (go [number], c); } strip.show (); // Duomenų siuntimo uždelsimas (2000); RANDOM (); // Gaminti maistą} void mobile () {RAKTAS = K; // Kiekvienas gyvatės judesys vieną kartą keičia kryptį. if (KEY == 8) // Gyvatės judėjimas aukštyn {už (int i = 2 + rezultatas; i> 0; i--) {sx = sx [i-1]; sy = sy [i -1]; } sy [0] = sy [0] - 1; if (sy [0] <0) // Eikite už sienos ir tęskite kitoje pusėje sy [0] = 7; } else if (KEY == 5) // Gyvatės judėjimas žemyn {už (int i = 2 + rezultatas; i> 0; i--) {sx = sx [i-1]; sy = sy [i -1]; } sy [0] = sy [0] + 1; if (sy [0]> 7) // Eikite už sienos ir tęskite kitoje pusėje sy [0] = 0; } else if (KEY == 4) // Gyvatės kairės judesys {for (int i = 2 + score; i> 0; i--) {sx = sx [i-1]; sy = sy [i -1]; } sx [0] = sx [0] - 1; if (sx [0] <0) // Eikite už sienos ir tęskite kitoje pusėje sx [0] = 7; } else if (KEY == 6) // Gyvatės judėjimas į dešinę {už (int i = 2 + rezultatas; i> 0; i--) {sx = sx [i-1]; sy = sy [i -1]; } sx [0] = sx [0] + 1; if (sx [0]> 7) // Eikite už sienos ir tęskite kitoje pusėje sx [0] = 0; } // Perkelti gyvatės kūną mygtuku} void display () {for (number = 0; number <64; number ++) // Išvalyti ekraną {strip.setPixelColor (skaičius, 0); } strip.show (); Spalva [0] = 40; // Nustatykite spalvą. Parametras yra R G B, diapazonas 0–255. Spalva [1] = 0; Spalva [2] = 0; c = juostelė. Spalva (spalva [1], spalva [0], spalva [2]); // Žalia Raudona Mėlyna // Nustatyti spalvą x = šviesiai [FX] [FY]; // Rodyti maisto juostelę.setPixelColor (x, c); Spalva [0] = atsitiktinė (3, 18); // Nustatykite spalvą. Parametras yra R G B, diapazonas 0–255. Spalva [1] = atsitiktinė (3, 18); Spalva [2] = atsitiktinė (3, 18); c = juostelė. Spalva (spalva [1], spalva [0], spalva [2]); // Žalia Raudona Mėlyna // Nustatykite spalvą (int i = 2 + rezultatas; i> 0; i--) // Rodyti gyvatės kūną {x = šviesa [sx [sy ; strip.setPixelColor (x, c); } Spalva [0] = 0; // Nustatykite spalvą. Parametras yra R G B, diapazonas 0–255. Spalva [1] = 40; Spalva [2] = 0; c = juostelė. Spalva (spalva [1], spalva [0], spalva [2]); // Žalia Raudona Mėlyna // Nustatyti spalvą x = šviesiai [sx [0] [sy [0]; // Rodyti gyvatės galvos juostelę.setPixelColor (x, c); strip.show (); // Siųsti duomenis} void loop () {mobile (); myDelay (speedS); // Per () yra vėlavimo laikas. rodo (); SX = sx [0]; SY = sy [0]; // Gaukite gyvatės galvos koordinatę (int i = 1; i <= 2+rezultatas; i ++) {if (SX == sx && SY == sy ) gameover (); } // Nuspręskite, ar gyvatės galva palietė jos kūną. Jei paliesite, tada persiųskite į „GameOver“. if (SY == FY && SX == FX) {RANDOM (); rezultatas ++; Spalva [0] = 40; // Nustatykite spalvą. Parametras yra R G B, diapazonas 0–255. Spalva [1] = 0; Spalva [2] = 0; c = juostelė. Spalva (spalva [1], spalva [0], spalva [2]); // Žalia Raudona Mėlyna // Nustatyti spalvą x = šviesiai [FX] [FY]; // Rodyti maisto juostelę.setPixelColor (x, c); strip.show (); // Siųsti duomenis, jei (! (rezultatas % 5)) {// Surinkti gyvatės greitį pagal balą. Kas 5 valgomi maisto produktai sudaro 100 ms. greitisS = greitisS - 50; if (speedS <150) // Apatinė riba yra 200 ms. Jei greitis mažesnis nei 200 ms, greitis išlieka 200 ms. greitisS = 150; }} // Nuspręskite, ar maistas valgomas. Jei gyvatė valgė maistą, tada pridėkite balų ir atkurkite maistą atsitiktinai. }

Eksperimento rezultatas

4 žingsnis: eksperimento rezultatas

Santykiniai rodmenys:

„FreaksBot“„Bluetooth“automobilis

Uždekite pirmąjį karoliuką ant 8*8 „NeoPixels“matricos su „Arduino“

„Micro: bit“Eksperimentas 05: RGB LED - „Elecfreaks Mirco: bit Starter Kit Course“

Penktadienio produkto pranešimas: LED muzikos dažnių spektro ekrano litavimo rinkinys

Norėdami sukurti išmanią šviesą, naudokite „ElecFreaks Micro: bit Tinker Kit“

Rekomenduojamas: