ዝርዝር ሁኔታ:

ኒኦፒክስልስ ማትሪክስ : የእባብ ጨዋታ 4 ደረጃዎች
ኒኦፒክስልስ ማትሪክስ : የእባብ ጨዋታ 4 ደረጃዎች

ቪዲዮ: ኒኦፒክስልስ ማትሪክስ : የእባብ ጨዋታ 4 ደረጃዎች

ቪዲዮ: ኒኦፒክስልስ ማትሪክስ : የእባብ ጨዋታ 4 ደረጃዎች
ቪዲዮ: Найти и обезвредить (1982) фильм 2024, ሀምሌ
Anonim
ኒኦፒክስልስ ማትሪክስ : የእባብ ጨዋታ
ኒኦፒክስልስ ማትሪክስ : የእባብ ጨዋታ

በልጅነታችን ጊዜ በጨዋታ ሳጥናችን ወይም በሞባይል ላይ የተጫወትነው የእባብ ጨዋታ አሁንም ታስታውሳለህ? ዛሬ በ 8*8 NeoPixels ማትሪክስ የእባብ ጨዋታ እንዴት እንደሚሠራ እንማራለን። እባቡን ለመቆጣጠር አርዱዲኖን እንደ የቁጥጥር ማዕከል እና ጆይስቲክ መሰበር ሞዱል እንመርጣለን።

ደረጃ 1 የአካል ክፍሎች ዝርዝር

ሃርድዌር

1 X Freaduino UNO Rev2.2 MB_EFUNO

1 X ተጣጣፊ 64 RGB LED 8*8 NeoPixels ማትሪክስ

1 ኤክስ ጆይስቲክ መለያየት ሞዱል BKOUT_MD01

3 X መመሪያ መስመር

ሶፍትዌር

አርዱዲኖ አይዲኢ

ደረጃ 2 የሃርድዌር ግንኙነት

D2 ን ለመሰካት NeoPixels ን ያገናኙ።

በጆይስቲክ መሰበር ሞዱል ላይ “ኤክስ” በአርዱዲኖ UNO ቦርድ ላይ ፒን A0 ን ያገናኙ ፣ “Y” ፒን A1 ን ፣ “ኬ” ፒን A2 ን ያገናኙ።

ደረጃ 3 - ፕሮግራሚንግ

P#ያካትቱ

#መግለፅ ፒን 2 // የውጤት ፒን #ጥራት MAX_LED 64 // የቁጥር uint32_t c; int a = 0 ፣ ቁጥር; ያልተፈረመ ቻር ሁዋን = 0 ፣ ci = 0; ያልተፈረመ ቻር u = 40; // የቃላት ቡድን ቅርጸ -ቁምፊ መጠን ያልተፈረመ ቻር x = 0; ያልተፈረመ ቻር ቀለም [3]; ያልተፈረመ ቻር ሂድ = {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 ያልተፈረመ የቻር ብርሃን [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} ፣}; ያልተፈረመ የቻር ቁምፊ [8] = // የሚላክበትን ቃል ያዘጋጁ {{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 ፣ 0 ፣ 0} ፣ // 1 {0 ፣ 1 ፣ 1 ፣ 1 ፣ 1 ፣ 1 ፣ 1 ፣ 0 ፣ 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} ፣ {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}, {0, 1, 1, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0 ፣ 0} ፣ // 4 {0 ፣ 1 ፣ 1 ፣ 1 ፣ 1 ፣ 1 ፣ 0 ፣ 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}, {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} ፣ {0 ፣ 1 ፣ 0 ፣ 0 ፣ 0 ፣ 0 ፣ 0 ፣ 0} ፣ {0 ፣ 1 ፣ 0 ፣ 0 ፣ 0 ፣ 0 ፣ 0 ፣ 0 ፣ 0 ፣ // 7 {0 ፣ 1 ፣ 1 ፣ 1 ፣ 1 ፣ 1 ፣ 1 ፣ 0 ፣ 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} ፣ {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 ፣ 0 },}; ያልተፈረመ የቻር ማሳያ ነጥብ [8] [8]; int speedS = 400; // የእባብ int ውጤት የመጀመሪያ ፍጥነት ፤ // የጨዋታ ውጤት int xValue; // JoyStick-X int yValue; // JoyStick-Y int zValue; // JoyStick-Z int FX ፣ FY; // የምግብ አስተባባሪ int SX ፣ SY; // የእባብ ጭንቅላት አስተባባሪ int KEY ፣ K; int ነቅቷል; // የጨዋታ ቻር sx [64] ን እንደገና ለማስጀመር ያንቁ; // የእባብ አካል ቻር ሲር [64]; Adafruit_NeoPixel strip = Adafruit_NeoPixel (MAX_LED ፣ ፒን ፣ NEO_RGB + NEO_KHZ800); ባዶነት RANDOM () {A: FX = የዘፈቀደ (0 ፣ 7) ፤ FY = በዘፈቀደ (0 ፣ 7); ለ (int i = 0; i <3+score; i ++) // በእባብ አካል ላይ የምግብ ማሳያ ይከልክሉ {if (FX == sx && FY == sy ) goto A; }} ባዶነት myDelay (ያልተፈረመ int Time) {// በእባብ እንቅስቃሴ መዘግየት ወቅት እንደ ምግብ ብልጭታ ያለ አንድ ነገር ማድረግ እና ለ (int t = 1; t 950 && KEY! = 5) የጆይስቲክ አቅጣጫን ማንበብ አለብን። K = 8; } ሌላ ከሆነ (yValue <50 && KEY! = 8) {K = 5; } ሌላ ከሆነ (xValue 950 && KEY! = 4) {K = 6; }} // እዚህ የቁልፍ ሰሌዳው አቅጣጫ ከእባቡ መንቀሳቀሻ አቅጣጫ ተቃራኒ መሆኑን ማወዳደር ይችላሉ። ተቃራኒ ከሆነ ፣ ከዚያ የቁልፍ ሰሌዳውን ይተው። /************************************************* *************************************************** *************************************************** *************************************************** ********/ ባዶነት ጨዋታ () {// አንዴ የ Gameover ፕሮግራም ካቆመ በኋላ ጨዋታውን እንደገና ለማስጀመር ማዕከላዊውን ቁልፍ ይጫኑ። ያልተፈረመ የቻር ዋጋ ፣ y; ቀለም [0] = በዘፈቀደ (3, 18); // ቀለም ያዘጋጁ። መለኪያው አር ጂ ቢ ፣ ክልል 0-255 ነው። ቀለም [1] = በዘፈቀደ (3, 18); ቀለም [2] = በዘፈቀደ (3, 18); c = strip. Color (ቀለም [1] ፣ ቀለም [0] ፣ ቀለም [2]); እሴት = ውጤት / 10; እሴት = እሴት * 4; y = 0; ለ (ቁጥር = እሴት ፤ ቁጥር <እሴት+4 ፤ ቁጥር ++) {ለ (ያልተፈረመ char vertical = 0; አቀባዊ <8; vertical ++) {displayscore [y] [vertical] = ቁምፊ [ቁጥር] [አቀባዊ]; } y ++; } እሴት = ውጤት % 10; እሴት = እሴት * 4; ለ (ቁጥር = እሴት ፤ ቁጥር <እሴት+4 ፤ ቁጥር ++) {ለ (ያልተፈረመ char vertical = 0; አቀባዊ <8; vertical ++) {displayscore [y] [vertical] = ቁምፊ [ቁጥር] [አቀባዊ]; } y ++; } ለ (ያልተፈረመ ቻር አግድም = 0 ፤ አግድም <8 ፤ አግድም ++) {ለ (ያልተፈረመ ቻር አቀባዊ = 0 ፤ አቀባዊ <8 ፤ አቀባዊ ++) {ከሆነ (ማሳያ ነጥብ [አግድም] [አቀባዊ] == 1) // ብርሃኑ ይኑር አይኑሩ በርቷል። {strip.setPixelColor (ቀላል [አግድም] [አቀባዊ] ፣ ሐ); } ሌላ strip.setPixelColor (ቀላል [አግድም] [አቀባዊ] ፣ 0); }} strip.show (); // የውሂብ መዘግየት ላክ (5000); ኬ = 0; // ጆይስቲክ አቅጣጫን sx ዳግም አስጀምር [0] = 2; sx [1] = 1; sx [2] = 0; ሲ [0] = 1; ሲ [1] = 1; ሲ [2] = 1; // የእባብ አስተባባሪ ውጤት = 0; // የጨዋታ ውጤት ፍጥነት ዳግም ያስጀምሩ ኤስ = 400; // የእባብ የመጀመሪያ ፍጥነት} ባዶነት ማዋቀር () {Serial.begin (9600); // የቤተመፃህፍት ስትሪፕን (ጅምር) ያስጀምሩ (); // ውሂብ ይላኩ። ነባሪ የእያንዳንዱ ነጥብ ቀለም እንደ 0. ስለዚህ እያንዳንዱ ነጥብ መጀመሪያ ላይ አይበራም። strip.show (); ኬ = 0; // የጆይስቲክ sx አቅጣጫን ዳግም ያስጀምሩ [0] = 2; sx [1] = 1; sx [2] = 0; ሲ [0] = 1; ሲ [1] = 1; ሲ [2] = 1; // የእባብ አስተባባሪ ውጤት = 0; // የጨዋታ ውጤትን ዳግም ያስጀምሩ ቀለም [0] = በዘፈቀደ (3 ፣ 18); // ቀለም ያዘጋጁ። መለኪያው አር ጂ ቢ ፣ ክልል 0-255 ነው። ቀለም [1] = በዘፈቀደ (3, 18); ቀለም [2] = በዘፈቀደ (3, 18); c = strip. Color (ቀለም [1] ፣ ቀለም [0] ፣ ቀለም [2]); // አረንጓዴ ቀይ ሰማያዊ // ቀለምን ለ (ቁጥር = 0 ፣ ቁጥር <24 ፣ ቁጥር ++) {strip.setPixelColor (ሂድ [ቁጥር] ፣ ሐ) ፤ } strip.show (); // የውሂብ መዘግየት ላክ (2000); RANDOM (); // ምግብ ያመርቱ} ባዶ ሞባይል () {KEY = K; // እያንዳንዱ የእባብ እንቅስቃሴ አቅጣጫውን ለአንድ ጊዜ ይለውጣል። ከሆነ (KEY == 8) // እባብ ወደ ላይ መንቀሳቀስ {ለ (int i = 2 + ነጥብ ፤ i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sy [0] = sy [0] - 1; ከሆነ (sy [0] <0) // ከድንበሩ አልፈው በሌላኛው በኩል ሲ [0] = 7; } ሌላ ከሆነ (KEY == 5) // እባብ ወደ ታች እንቅስቃሴ {ለ (int i = 2 + ነጥብ ፤ i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sy [0] = sy [0] + 1; ከሆነ (sy [0]> 7) // ከድንበሩ አልፈው በሌላኛው በኩል ሲ [0] = 0; } ሌላ ከሆነ (KEY == 4) // የእባብ የግራ እንቅስቃሴ {ለ (int i = 2 + ውጤት ፤ i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sx [0] = sx [0] - 1; ከሆነ (sx [0] <0) // ከድንበሩ አልፈው በሌላኛው በኩል ይቀጥሉ sx [0] = 7; } ሌላ ከሆነ (KEY == 6) // የእባብ ትክክለኛ እንቅስቃሴ {ለ (int i = 2 + ውጤት ፤ i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sx [0] = sx [0] + 1; ከሆነ (sx [0]> 7) // ከድንበሩ አልፈው በሌላ በኩል sx [0] = 0; } // የእባብ አካልን በአዝራር ያንቀሳቅሱ} ባዶ ማሳያዎች () {ለ (ቁጥር = 0 ፤ ቁጥር <64 ፤ ቁጥር ++) // ማያ ገጹን ያጽዱ {strip.setPixelColor (ቁጥር ፣ 0) ፤ } strip.show (); ቀለም [0] = 40; // ቀለም ያዘጋጁ። መለኪያው አር ጂ ቢ ፣ ክልል 0-255 ነው። ቀለም [1] = 0; ቀለም [2] = 0; c = strip. Color (ቀለም [1] ፣ ቀለም [0] ፣ ቀለም [2]); // አረንጓዴ ቀይ ሰማያዊ // ቀለም ያዋቅሩ x = ብርሃን [FX] [FY]; // የምግብ strip.setPixelColor (x ፣ c) አሳይ ፤ ቀለም [0] = በዘፈቀደ (3, 18); // ቀለም ያዘጋጁ። መለኪያው አር ጂ ቢ ፣ ክልል 0-255 ነው። ቀለም [1] = በዘፈቀደ (3, 18); ቀለም [2] = በዘፈቀደ (3, 18); c = strip. Color (ቀለም [1] ፣ ቀለም [0] ፣ ቀለም [2]); // አረንጓዴ ቀይ ሰማያዊ // ቀለም ለ (int i = 2 + ውጤት ፤ i> 0; i--) // የእባብ አካልን ያሳዩ {x = light [sx [sy ; strip.setPixelColor (x, c); } ቀለም [0] = 0; // ቀለም ያዘጋጁ። መለኪያው አር ጂ ቢ ፣ ክልል 0-255 ነው። ቀለም [1] = 40; ቀለም [2] = 0; c = strip. Color (ቀለም [1] ፣ ቀለም [0] ፣ ቀለም [2]); // አረንጓዴ ቀይ ሰማያዊ // ቀለም አዘጋጅ x = ብርሃን [sx [0] [sy [0]; // የእባብ ራስ ስትሪፕ አሳይ። strip.show (); // ውሂብ ይላኩ} ባዶነት loop () {ሞባይል (); myDelay (speedS); // በ Within ውስጥ) የመዘግየት ጊዜ ነው። ማሳያዎች (); SX = sx [0]; SY = sy [0]; // ለ (int i = 1; i <= 2+score; i ++) {ከሆነ (SX == sx && SY == sy ) gameover (); } // የእባብ ጭንቅላት ሰውነቱን ነክቶ እንደሆነ ይፈርዱ። ከተነካ ከዚያ ወደ GameOver ያስተላልፉ። ከሆነ (SY == FY && SX == FX) {RANDOM (); ውጤት ++; ቀለም [0] = 40; // ቀለም ያዘጋጁ። መለኪያው አር ጂ ቢ ፣ ክልል 0-255 ነው። ቀለም [1] = 0; ቀለም [2] = 0; c = strip. Color (ቀለም [1] ፣ ቀለም [0] ፣ ቀለም [2]); // አረንጓዴ ቀይ ሰማያዊ // ቀለም ያዋቅሩ x = ብርሃን [FX] [FY]; // የምግብ strip.setPixelColor (x ፣ c) አሳይ ፤ strip.show (); // ውሂብ ከሆነ (! (ውጤት % 5)) {// በውጤቱ መሠረት የእባብ ፍጥነትን ይጨምሩ። በየ 5 ምግቦች ይመገባሉ ፣ 100 ሚ. speedS = speedS - 50; ከሆነ (speedS <150) // የታችኛው ወሰን 200ms ነው። ፍጥነቱ ከ 200 ሚ.ሜ በታች ከሆነ ፣ ፍጥነቱ 200 ሚ.ሜ ይቆያል። speedS = 150; }} // ምግብ ይበላ እንደሆነ ይፈርዱ። እባብ ምግብ ከበላ ፣ ከዚያ ነጥቦችን ያስገባል እና ምግብን በዘፈቀደ ያድሳል። }

የሙከራ ውጤት

ደረጃ 4 የሙከራ ውጤት

አንጻራዊ ንባቦች;

FreaksBot ብሉቱዝ መኪና

የመጀመሪያውን ዶቃ በ 8*8 NeoPixels Matrix ላይ ከአርዱዲኖ ጋር ያብሩ

ማይክሮ: ቢት ሙከራ 05: RGB LED - Elecfreaks Mirco: bit Starter Kit Course

ዓርብ የምርት ልጥፍ -የ LED ሙዚቃ ድግግሞሽ ስፔክትረም ማሳያ መሸጫ ኪት

ስማርት ብርሃንን ለመፍጠር ElecFreaks Micro: bit Tinker Kit ን ይጠቀሙ

የሚመከር: