Satura rādītājs:

NeoPixels Matrix : Čūsku spēle: 4 soļi
NeoPixels Matrix : Čūsku spēle: 4 soļi

Video: NeoPixels Matrix : Čūsku spēle: 4 soļi

Video: NeoPixels Matrix : Čūsku spēle: 4 soļi
Video: Smartes LED Logo selbst gebaut & Werkstatt Tour 2024, Novembris
Anonim
NeoPixels Matrix : Čūsku spēle
NeoPixels Matrix : Čūsku spēle

Vai jūs vēl atceraties čūsku spēli, ko mēs bērnībā spēlējām spēļu kastē vai mobilajā telefonā? Šodien mēs iemācīsimies izveidot čūsku spēli ar 8*8 NeoPixels Matrix. Mēs izvēlamies Arduino uno kā vadības centru un kursorsviru izlaušanās moduli, lai kontrolētu čūsku.

1. darbība: komponentu saraksts:

Aparatūra:

1 X Freaduino UNO Rev.2.2 MB_EFUNO

1 X elastīga 64 RGB LED 8*8 NeoPixels Matrix

1 X Kursorsviras izlaušanās modulis BKOUT_MD01

3 X Vadlīnija

Programmatūra:

Arduino IDE

2. darbība. Aparatūras savienojums

Savienojiet NeoPixels ar tapu D2.

"X" kursorsviras izlaušanās modulī savieno tapu A0 uz Arduino UNO plates, "Y" savieno tapu A1, "K" savieno tapu A2.

3. solis: programmēšana

P#ietver

#define PIN 2 // Output Pin #define MAX_LED 64 // lodītes daudzums uint32_t c; int a = 0, skaitlis; neparakstīts char huan = 0, ci = 0; neparakstīts simbols u = 40; // Vārdu grupas fonta lielums unsigned char x = 0; neparakstīta zīme Krāsa [3]; neparakstīts simbols = {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 neparakstīti simboli [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] = // Iestatiet nosūtāmo vārdu {{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 },}; neparakstīts simbols displaycore [8] [8]; int ātrumsS = 400; // Čūskas sākotnējais ātrums int score; // Spēles rezultāts int xValue; // JoyStick-X int yValue; // JoyStick-Y int zValue; // JoyStick-Z int FX, FY; // Ēdienu koordinātas SX, SY; // Čūskas galvas koordināta int KEY, K; int Iespējots; // Iespējot restartēt spēli char sx [64]; // Čūskas ķermeņa koordināta char sy [64]; Adafruit_NeoPixel strip = Adafruit_NeoPixel (MAX_LED, PIN, NEO_RGB + NEO_KHZ800); void RANDOM () {A: FX = nejaušs (0, 7); FY = nejaušs (0, 7); par (int i = 0; i <3+score; i ++) // Novērst pārtikas parādīšanu uz čūskas ķermeņa {if (FX == sx && FY == sy ) goto A; }} void myDelay (unsigned int Time) {// Čūskas kustības aizkavēšanās periodā mums ir jādara kaut kas līdzīgs pārtikas spīdumam un jāizlasa kursorsviras virziens (int t = 1; t 950 && KEY! = 5) { K = 8; } cits if (yValue <50 && KEY! = 8) {K = 5; } cits if (xVertība 950 && KEY! = 4) {K = 6; }} // Šeit jūs varat salīdzināt, vai tastatūras virziens ir pretējs čūskas kustības virzienam. Ja tas ir pretējs, atmetiet tastatūru. /************************************************ ************************************************* ************************************************* ************************************************* ********/ void gameover () {// Kad Gameover programma ir apstājusies, nospiediet centrālo pogu, lai restartētu spēli. neparakstīta simbolu vērtība, y; Krāsa [0] = nejauša (3, 18); // Iestatīt krāsu. Parametrs ir R G B, diapazons 0-255. Krāsa [1] = nejauša (3, 18); Krāsa [2] = nejauša (3, 18); c = sloksne. Krāsa (krāsa [1], krāsa [0], krāsa [2]); vērtība = rezultāts / 10; vērtība = vērtība * 4; y = 0; par (numurs = vērtība; skaitlis <vērtība+4; skaitlis ++) {par (neparakstīts simbols vertikāli = 0; vertikāli <8; vertikāli ++) {displaycore [y] [vertical] = rakstzīme [skaitlis] [vertikāli]; } y ++; } vērtība = rezultāts % 10; vērtība = vērtība * 4; par (numurs = vērtība; skaitlis <vērtība+4; skaitlis ++) {par (neparakstīts simbols vertikāli = 0; vertikāli <8; vertikāli ++) {displaycore [y] [vertical] = rakstzīme [skaitlis] [vertikāli]; } y ++; } par (neparakstīts simbols horizontāli = 0; horizontāli <8; horizontāli ++) {par (neparakstīts simbols vertikāli = 0; vertikāli <8; vertikāli ++) {ja (displejs [horizontāli] [vertikāli] == 1) // Nosakiet, vai gaisma ir ieslēgts. {strip.setPixelColor (gaišs [horizontāls] [vertikāls], c); } cits strip.setPixelColor (gaišs [horizontāls] [vertikāls], 0); }} strip.show (); // Datu nosūtīšanas aizkave (5000); K = 0; // Atiestatīt kursorsviru virzienu sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Atiestatīt čūskas koordinātu rezultātu = 0; // Atiestatīt spēles rezultātu speedS = 400; // Čūskas sākotnējais ātrums} void setup () {Serial.begin (9600); // Initialize library strip.begin (); // Sūtīt datus. Pēc noklusējuma katra punkta krāsa ir 0. Tātad katrs punkts sākumā nav izgaismots. strip.show (); K = 0; // Atiestatīt kursorsviras virzienu sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // Atiestatīt čūskas koordinātu rezultātu = 0; // Spēles rezultātu atiestatīšana Krāsa [0] = nejauša (3, 18); // Iestatīt krāsu. Parametrs ir R G B, diapazons 0-255. Krāsa [1] = nejauša (3, 18); Krāsa [2] = nejauša (3, 18); c = sloksne. Krāsa (krāsa [1], krāsa [0], krāsa [2]); // Zaļš Sarkans Zils // Iestatiet krāsu (numurs = 0; skaitlis <24; skaitlis ++) {strip.setPixelColor (iet [numurs], c); } strip.show (); // Datu nosūtīšanas aizkave (2000); RANDOM (); // Ražot pārtiku} void mobile () {KEY = K; // Katra čūskas kustība vienreiz maina virzienu. ja (KEY == 8) // Čūskas kustība augšup {uz (int i = 2 + rezultāts; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sy [0] = sy [0] - 1; if (sy [0] <0) // Iziet aiz robežas un turpināt otrā pusē sy [0] = 7; } cits ja (KEY == 5) // Čūskas kustība uz leju {par (int i = 2 + rezultāts; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sy [0] = sy [0] + 1; if (sy [0]> 7) // Iziet aiz robežas un turpināt otrā pusē sy [0] = 0; } cits ja (KEY == 4) // Čūska pa kreisi kustība {par (int i = 2 + rezultāts; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sx [0] = sx [0] - 1; if (sx [0] <0) // Iziet aiz robežas un turpināt otrā pusē sx [0] = 7; } cits ja (KEY == 6) // Čūskas labā kustība {par (int i = 2 + rezultāts; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sx [0] = sx [0] + 1; if (sx [0]> 7) // Iziet aiz robežas un turpināt otrā pusē sx [0] = 0; } // Pārvietot čūskas ķermeni ar pogu} void display () {for (number = 0; number <64; number ++) // Notīrīt ekrānu {strip.setPixelColor (skaitlis, 0); } strip.show (); Krāsa [0] = 40; // Iestatīt krāsu. Parametrs ir R G B, diapazons 0-255. Krāsa [1] = 0; Krāsa [2] = 0; c = sloksne. Krāsa (krāsa [1], krāsa [0], krāsa [2]); // Zaļš Sarkans Zils // Iestatīt krāsu x = gaišs [FX] [FY]; // Parādīt pārtikas sloksni.setPixelColor (x, c); Krāsa [0] = nejauša (3, 18); // Iestatīt krāsu. Parametrs ir R G B, diapazons 0-255. Krāsa [1] = nejauša (3, 18); Krāsa [2] = nejauša (3, 18); c = sloksne. Krāsa (krāsa [1], krāsa [0], krāsa [2]); // Zaļš Sarkans Zils // Iestatīt krāsu (int i = 2 + score; i> 0; i--) // Parādīt čūskas ķermeni {x = gaišs [sx [sy ; strip.setPixelColor (x, c); } Krāsa [0] = 0; // Iestatīt krāsu. Parametrs ir R G B, diapazons 0-255. Krāsa [1] = 40; Krāsa [2] = 0; c = sloksne. Krāsa (krāsa [1], krāsa [0], krāsa [2]); // Zaļš Sarkans Zils // Iestatīt krāsu x = gaiša [sx [0] [sy [0]; // Parādīt čūskas galvas sloksni.setPixelColor (x, c); strip.show (); // Sūtīt datus} void loop () {mobile (); myDelay (speedS); // (ietvaros) ir aizkavēšanās laiks. displeji (); SX = sx [0]; SY = sy [0]; // Iegūstiet čūskas galvas koordinātu (int i = 1; i <= 2+score; i ++) {if (SX == sx && SY == sy ) gameover (); } // Spriediet, vai čūskas galva pieskārās tās ķermenim. Ja pieskaras, pārsūtiet uz GameOver. ja (SY == FY && SX == FX) {RANDOM (); rezultāts ++; Krāsa [0] = 40; // Iestatīt krāsu. Parametrs ir R G B, diapazons 0-255. Krāsa [1] = 0; Krāsa [2] = 0; c = sloksne. Krāsa (krāsa [1], krāsa [0], krāsa [2]); // Zaļš Sarkans Zils // Iestatīt krāsu x = gaiša [FX] [FY]; // Parādīt pārtikas sloksni.setPixelColor (x, c); strip.show (); // Sūtīt datus, ja (! (rezultāts % 5)) {// Saskaņot čūskas ātrumu atbilstoši rezultātam. Katrs 5 apēstais ēdiens ir 100 ms. ātrumsS = ātrumsS - 50; ja (speedS <150) // Apakšējā robeža ir 200 ms. Ja ātrums ir mazāks par 200 ms, ātrums paliek 200 ms. ātrumsS = 150; }} // Spriediet, vai ēdiens ir apēsts. Ja čūska ēda pārtiku, tad plus punktus un atjauno pārtiku nejauši. }

Eksperimenta rezultāts

4. darbība. Eksperimenta rezultāts

Relatīvie rādījumi:

FreaksBot Bluetooth automašīna

Iededziet pirmo lodīti uz 8*8 NeoPixels matricas ar Arduino

Micro: bit Eksperiments 05: RGB LED - Elecfreaks Mirco: bit Starter Kit Course

Piektdienas produkta ziņojums: LED mūzikas frekvenču spektra displeja lodēšanas komplekts

Lai izveidotu gudru gaismu, izmantojiet ElecFreaks Micro: bit Tinker Kit

Ieteicams: