সুচিপত্র:

NeoPixels Matrix : Snake Game: 4 ধাপ
NeoPixels Matrix : Snake Game: 4 ধাপ

ভিডিও: NeoPixels Matrix : Snake Game: 4 ধাপ

ভিডিও: NeoPixels Matrix : Snake Game: 4 ধাপ
ভিডিও: Snake on 16x16 NeoPixel Matrix 2024, জুলাই
Anonim
NeoPixels ম্যাট্রিক্স ake সাপের খেলা
NeoPixels ম্যাট্রিক্স ake সাপের খেলা

আমাদের ছোটবেলায় আমরা আমাদের গেম বক্স বা মোবাইলে যে সাপের খেলা খেলেছিলাম তা কি এখনও মনে আছে? আজ আমরা শিখব কিভাবে 8*8 NeoPixels ম্যাট্রিক্স দিয়ে একটি সাপের খেলা তৈরি করা যায়। আমরা সাপ নিয়ন্ত্রণের জন্য Arduino uno কে নিয়ন্ত্রণ কেন্দ্র এবং জয়স্টিক ব্রেকআউট মডিউল হিসাবে বেছে নিই।

ধাপ 1: উপাদান তালিকা:

হার্ডওয়্যার:

1 X Freaduino UNO Rev2.2 MB_EFUNO

1 X নমনীয় 64 RGB LED 8*8 NeoPixels ম্যাট্রিক্স

1 এক্স জয়স্টিক ব্রেকআউট মডিউল BKOUT_MD01

3 এক্স গাইড লাইন

সফটওয়্যার:

Arduino IDE

পদক্ষেপ 2: হার্ডওয়্যার সংযোগ

D2 পিন করতে NeoPixels সংযুক্ত করুন।

জয়েস্টিক ব্রেকআউট মডিউলে "X" Arduino UNO বোর্ডে পিন A0, "Y" সংযোগ পিন A1, "K" সংযোগ পিন A2 সংযুক্ত করে।

ধাপ 3: প্রোগ্রামিং

পি#অন্তর্ভুক্ত

#ডিফাইন পিন 2 // আউটপুট পিন #ডিফাইন MAX_LED 64 // পুঁতির পরিমাণ uint32_t c; int a = 0, সংখ্যা; স্বাক্ষরহীন চর হুয়ান = 0, সিআই = 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, 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, 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, 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 },}; স্বাক্ষরবিহীন চার ডিসপ্লেস্কোর [8] [8]; int গতি S = 400; // সাপের int স্কোরের প্রাথমিক গতি; // গেম স্কোর int xValue; // JoyStick-X int yValue; // JoyStick-Y int zValue; // JoyStick-Z int FX, FY; // খাদ্যের সমন্বয় SX, SY; // সাপের মাথার সমন্বয় KEY, K; int সক্রিয়; // খেলা চর এসএক্স [64] পুনরায় চালু করতে সক্ষম করুন; // সাপের শরীরের চর sy [64] এর সমন্বয়; Adafruit_NeoPixel স্ট্রিপ = Adafruit_NeoPixel (MAX_LED, PIN, NEO_RGB + NEO_KHZ800); অকার্যকর RANDOM () {A: FX = এলোমেলো (0, 7); FY = এলোমেলো (0, 7); জন্য (int i = 0; i <3+score; i ++) // সাপের শরীরে খাদ্য প্রদর্শন প্রতিরোধ {যদি (FX == sx && FY == sy ) goto A; }} অকার্যকর MyDelay (স্বাক্ষরবিহীন int সময়) {// সাপের চলাচলের বিলম্বকালীন সময়ে, আমাদের খাদ্য গ্লিটার এর মত কিছু করতে হবে এবং (int t = 1; t 950 && KEY! = 5) এর জন্য জয়স্টিকের নির্দেশনা পড়তে হবে। কে = 8; } অন্যথায় যদি (yValue <50 && KEY! = 8) {K = 5; } অন্যথায় যদি (xValue 950 && KEY! = 4) {K = 6; }} // এখানে আপনি তুলনা করতে পারেন কীপ্যাডের দিক সাপের চলার দিকের বিপরীত কিনা। যদি এটি বিপরীত হয়, তাহলে কীপ্যাড ছেড়ে দিন। /***************************************************** ****************************************************** ****************************************************** ****************************************************** ********/ অকার্যকর গেমওভার () {// একবার গেমওভার প্রোগ্রাম বন্ধ হয়ে গেলে, গেমটি পুনরায় চালু করতে কেন্দ্রীয় বোতাম টিপুন। স্বাক্ষরবিহীন চার মান, y; রঙ [0] = এলোমেলো (3, 18); // সেট রঙ প্যারামিটার হল R G B, পরিসীমা 0-255। রঙ [1] = এলোমেলো (3, 18); রঙ [2] = এলোমেলো (3, 18); c = strip. Color (কালার [1], কালার [0], কালার [2]); মান = স্কোর / 10; মান = মান * 4; y = 0; জন্য (সংখ্যা = মান; সংখ্যা <মান+4; সংখ্যা ++) {জন্য (স্বাক্ষরবিহীন চারটি উল্লম্ব = 0; উল্লম্ব <8; উল্লম্ব ++) {ডিসপ্লেস্কোর [y] [উল্লম্ব] = অক্ষর [সংখ্যা] [উল্লম্ব]; } y ++; } মান = স্কোর % 10; মান = মান * 4; জন্য (সংখ্যা = মান; সংখ্যা <মান+4; সংখ্যা ++) {জন্য (স্বাক্ষরবিহীন চারটি উল্লম্ব = 0; উল্লম্ব <8; উল্লম্ব ++) {ডিসপ্লেস্কোর [y] [উল্লম্ব] = অক্ষর [সংখ্যা] [উল্লম্ব]; } y ++; } এর জন্য (স্বাক্ষর না করা চর অনুভূমিক = 0; অনুভূমিক <8; অনুভূমিক ++) {জন্য (স্বাক্ষরবিহীন চারটি উল্লম্ব = 0; উল্লম্ব <8; উল্লম্ব ++) {যদি (ডিসপ্লেস্কোর [অনুভূমিক] [উল্লম্ব] == 1) // আলো কিনা তা বিচার করুন চালু আছে {strip.setPixelColor (হালকা [অনুভূমিক] [উল্লম্ব], গ); } অন্য strip.setPixelColor (হালকা [অনুভূমিক] [উল্লম্ব], 0); }} strip.show (); // ডেটা বিলম্ব পাঠান (5000); কে = 0; // রিসেট জয়স্টিক দিক sx [0] = 2; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // সাপ সমন্বয় স্কোর = 0 রিসেট করুন; // রিসেট গেম স্কোর স্পীড = 400; // সাপের প্রাথমিক গতি} অকার্যকর সেটআপ () {Serial.begin (9600); // লাইব্রেরি strip.begin () শুরু করুন; // তথ্য পাঠান. প্রতিটি বিন্দুর রঙ 0 হিসাবে ডিফল্ট। সুতরাং প্রতিটি বিন্দু শুরুতে আলোকিত হয় না। strip.show (); কে = 0; // জয়স্টিক sx [0] = 2 এর দিকটি পুনরায় সেট করুন; sx [1] = 1; sx [2] = 0; sy [0] = 1; sy [1] = 1; sy [2] = 1; // সাপ সমন্বয় স্কোর = 0 রিসেট করুন; // রিসেট গেম স্কোর কালার [0] = এলোমেলো (3, 18); // সেট রঙ প্যারামিটার হল R G B, পরিসীমা 0-255। রঙ [1] = এলোমেলো (3, 18); রঙ [2] = এলোমেলো (3, 18); c = strip. Color (কালার [1], কালার [0], কালার [2]); // সবুজ লাল নীল // রং সেট করুন (সংখ্যা = 0; সংখ্যা <24; সংখ্যা ++) {strip.setPixelColor (go [number], c); } strip.show (); // ডেটা বিলম্ব পাঠান (2000); র্যান্ডম (); // খাদ্য উত্পাদন} অকার্যকর মোবাইল () {KEY = K; // সাপের প্রতিটি চলাচল একবারের জন্য দিক পরিবর্তন করে। যদি (KEY == 8) // সাপের wardর্ধ্বমুখী আন্দোলন {জন্য (int i = 2 + score; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sy [0] = sy [0] - 1; যদি (sy [0] <0) // সীমানা পেরিয়ে যান এবং অন্য দিকে sy [0] = 7 চালিয়ে যান; } অন্যথায় যদি (KEY == 5) // সাপের নিম্নমুখী আন্দোলন {জন্য (int i = 2 + score; i> 0; i--) {sx = sx [i-1]; sy = sy [i - 1]; } sy [0] = sy [0] + 1; যদি (sy [0]> 7) // সীমানা পেরিয়ে যান এবং অন্য দিকে sy [0] = 0 চালিয়ে যান; } অন্যথায় যদি (KEY == 4) // সাপের বাম আন্দোলন {জন্য (int i = 2 + score; 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 + score; 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; // রঙ সেট করুন। প্যারামিটার হল R G B, পরিসীমা 0-255। রঙ [1] = 0; রঙ [2] = 0; c = strip. Color (কালার [1], কালার [0], কালার [2]); // সবুজ লাল নীল // সেট রঙ x = আলো [FX] [FY]; // প্রদর্শন খাদ্য strip.setPixelColor (x, c); রঙ [0] = এলোমেলো (3, 18); // রঙ সেট করুন। প্যারামিটার হল R G B, পরিসীমা 0-255। রঙ [1] = এলোমেলো (3, 18); রঙ [2] = এলোমেলো (3, 18); c = strip. Color (কালার [1], কালার [0], কালার [2]); // সবুজ লাল নীল // এর জন্য রং সেট করুন (int i = 2 + score; i> 0; i--) // সাপের শরীর প্রদর্শন করুন {x = light [sx [sy ; strip.setPixelColor (x, c); } রঙ [0] = 0; // রঙ সেট করুন। প্যারামিটার হল R G B, পরিসীমা 0-255। রঙ [1] = 40; রঙ [2] = 0; c = strip. Color (কালার [1], কালার [0], কালার [2]); // সবুজ লাল নীল // সেট রঙ x = হালকা [sx [0] [sy [0]; // প্রদর্শন সাপের মাথা strip.setPixelColor (x, c); strip.show (); // send data} void loop () {mobile (); myDelay (speedS); // Within এর মধ্যে) বিলম্বের সময়। প্রদর্শন (); SX = sx [0]; SY = sy [0]; // সাপের মাথার সমন্বয় পান (int i = 1; i <= 2+score; i ++) {if (SX == sx && SY == sy ) গেমওভার (); } // সাপের মাথা তার শরীরে স্পর্শ করেছে কিনা বিচার করুন। যদি স্পর্শ করা হয়, তাহলে GameOver- এ ফরওয়ার্ড করুন। যদি (SY == FY && SX == FX) {RANDOM (); স্কোর ++; রঙ [0] = 40; // রঙ সেট করুন। প্যারামিটার হল R G B, পরিসীমা 0-255। রঙ [1] = 0; রঙ [2] = 0; c = strip. Color (কালার [1], কালার [0], কালার [2]); // সবুজ লাল নীল // সেট রঙ x = আলো [FX] [FY]; // প্রদর্শন খাদ্য strip.setPixelColor (x, c); strip.show (); // তথ্য পাঠান যদি (! (স্কোর % 5)) {// স্কোর অনুযায়ী সাপের গতি বাড়ান। প্রতি 5 টি খাবার খাওয়া, 100ms accerlerate। speedS = speedS - 50; যদি (speedS <150) // নিচের সীমা 200ms হয়। যদি গতি 200ms এর কম হয়, গতি 200ms থাকে। speedS = 150; }} // খাবার খাওয়া হয় কিনা বিচার করুন। যদি সাপ খাবার খায়, তাহলে প্লাস স্কোর এবং এলোমেলোভাবে খাদ্য পুনর্জন্ম। }

পরীক্ষার ফলাফল

ধাপ 4: পরীক্ষার ফলাফল

আপেক্ষিক পাঠ:

FreaksBot ব্লুটুথ কার

Arduino দিয়ে 8*8 NeoPixels ম্যাট্রিক্সে প্রথম মালা জ্বালান

মাইক্রো: বিট এক্সপেরিমেন্ট 05: RGB LED - Elecfreaks Mirco: bit স্টার্টার কিট কোর্স

শুক্রবার প্রোডাক্ট পোস্ট: এলইডি মিউজিক ফ্রিকোয়েন্সি স্পেকট্রাম ডিসপ্লে সোল্ডারিং কিট

একটি স্মার্ট লাইট তৈরি করতে ElecFreaks মাইক্রো: বিট টিঙ্কার কিট ব্যবহার করুন

প্রস্তাবিত: