Мазмұны:

Ардуинодағы әлемдегі ең қиын ойынды қалпына келтіру: 7 қадам
Ардуинодағы әлемдегі ең қиын ойынды қалпына келтіру: 7 қадам

Бейне: Ардуинодағы әлемдегі ең қиын ойынды қалпына келтіру: 7 қадам

Бейне: Ардуинодағы әлемдегі ең қиын ойынды қалпына келтіру: 7 қадам
Бейне: Lesson 06: Arduino Data Types | Robojax Arduino Step By Step Course 2024, Қараша
Anonim
Image
Image

Бұл жоба Интернеттен табуға болатын компьютерлік ойынға негізделген. Оның атауы «Әлемдегі ең қиын ойын». Мен оны төрт модульді LED Matrix көмегімен Arduino-да қайта құра алдым. Бұл нұсқаулықта мен оны өзіңіз қалай жасау керектігін үйретемін. Біз тым көп мәлімет бермес бұрын, мен бұл ойынды жасау үшін жасаған қадамдарыма шолу жасағым келеді.

  1. Мен барлық қажетті бөлшектерді жинадым.
  2. Мен бөліктерді бір -бірімен байланыстырдым.
  3. Мен ойыншыны барлық модульдер бойынша жылжыту үшін джойстикті қолданған эскиз жаздым.
  4. Мен бірінші кедергілерді жасап, оларды эскизге қостым, сондықтан олар әлемдегі ең қиын ойынға еліктеді.
  5. Содан кейін мен кедергілермен соқтығысуды анықтау үшін кодты қостым, ол ойынды қайта бастайды.
  6. Содан кейін мен кедергілердің тағы екі деңгейін ойлап таптым.

1 -қадам: барлық бөліктер

Барлық бөлшектер
Барлық бөлшектер
Барлық бөлшектер
Барлық бөлшектер

Мұнда сізге қажет барлық бөлшектердің тізімі берілген:

  1. Arduino UNO мен USB қосқышы: https://www.banggood.com/Wh Wholesale-Arduino-Compati.
  2. Төрт модуль 8x8: жарықдиодты матрица
  3. Джойстик:
  4. 10 ер мен әйел сымы:

2 -қадам: бөлшектерді Arduino -ға қалай қосуға болады

Бөлшектерді Arduino -ға қалай қосуға болады
Бөлшектерді Arduino -ға қалай қосуға болады

Жарық диодты матрицаны Arduino -ға қалай қосуға болады

  1. GND GND -ге барады
  2. VCC 5 В дейін өтеді
  3. DataIn 12 цифрлық пинге өтеді
  4. CLK цифрлық пинге 11 өтеді
  5. CS немесе LOAD цифрлық пин 10ға өтеді

Джойстикті қалай қосуға болады

  1. GND GND -ге барады
  2. 5В 5В дейін өтеді
  3. VRx A0 аналогтық пинге өтеді
  4. VRy A1 аналогтық пинге өтеді
  5. БҚ қолданылмайды

Батарея Arduino қуатын беру үшін 9в ұясына қосылады

3 -қадам: Бағдарламаның ағымдық диаграммасы

Бағдарламаның ағымдық диаграммасы
Бағдарламаның ағымдық диаграммасы

Сопақша бағдарламаның басталғанын көрсетеді.

Бірінші қадам - барлық кедергілерді анықтау.

Келесі екі қадам айнымалыларды орнатуды және барлық модульдерді қосуды көрсетеді.

Келесі қадам - жарықдиодты бірінші деңгейге және кез келген басқа айнымалыларға орнату.

Келесіде ойнатқыштың қазіргі кездегі деңгейін көрсетеді.

Ромб Джойстиктің қай бағытта итеріліп жатқанын білу үшін оқылғанын көрсетеді.

Содан кейін ойыншыны джойстик қай бағытта болса, сол жаққа жылжытыңыз.

Ойыншының кедергімен соқтығысқанын тексеріңіз.

Егер ойыншы кедергіге тап болса, бірінші деңгейге оралыңыз. Егер ойыншы деңгейдің соңына жеткенін тексермесе.

Егер ойыншы деңгей соңында болса, келесі деңгейге қойыңыз, содан кейін «Ағымдағы деңгейді көрсету» тармағына қайтыңыз. Егер олар соңында болмаса, кедергілерді жылжытыңыз және «Джойстикті оқыңыз» дегенге қайта оралыңыз.

4 -қадам: Джойстикті бағдарламалау

Әрине, ойыншының кішкентай нүктесін жылжыту үшін бізге джойстик қажет. және джойстик ойыншыны жылжытуға мүмкіндік беру үшін оны Arduino IDE -де кодтау керек. LedControl кітапханасын қосу керек, оны эскиз мәзірі> Кітапханаларды қосу> кітапханаларды басқару және LedControl іздеу арқылы табуға болады. Джойстиктің коды осылай көрінеді.

#«LedControl.h» қосыңыз

int DataIn = 12; int CLK = 11; int DIN = 10; LedControl lc = LedControl (DataIn, CLK, DIN, 4); // Төрт модуль үшін объект жасайды int delaytime = 50; // ойынның жылдамдығы int joystick_RtLt, joystick_UpDn; int ойыншылар_x = 0; // ойыншылардың көлденең орналасуы 0 -ден 31 -ге дейін int player_y = 3; // ойыншылар тік позиция 0 -ден 7 -ге дейін int, баған, модуль; void setup () {initialize_modules (); // барлық төрт модульді қосыңыз және орнатыңыз} void loop () {move_player (); // ойыншының кешігуін (кешігу) қозғалатынын тексеру арқылы циклды бастау; } void initialize_modules () {lc.shutdown (0, false); // 0 lc.setIntensity модулін іске қосады (0, 1); lc.shutdown (1, жалған); // 1 lc.setIntensity модулін іске қосады (1, 1); lc.shutdown (2, жалған); // 2 lc.setIntensity модулін іске қосады (2, 1); lc.shutdown (3, жалған); // 3 lc.setIntensity модулін іске қосады (3, 1); lc.clearDisplay (0); // модульді тазартады 0} void move_player () {module = players_x/8; // ойнатқыштың қай модульде орналасқанын анықтайды = player_x%8; // ойыншы модуль қатарында орналасқан бағанды анықтайды = players_y; lc.setLed (модуль, жол, баған, жалған); // ойыншының ағымдағы орнында светодиодты өшіру joystick_RtLt = analogRead (A0)/204 - 2; // X -джойстикті және картаның диапазоны 2 -ден -2 -ге дейін болса, (joystick_RtLt> 0) // джойстик оң жақта болғанда, xx ++ ойыншыларын оқыңыз; // оңға басқаға өтіңіз, егер (joystick_RtLt 0) // егер джойстик сол жақта болса, ойыншылардың басында емес_x--; // солға жылжу joystick_UpDn = analogRead (A1)/204 - 2; // Y-джойстикті оқыңыз және картаның диапазоны 2-ден -2-ге дейін, егер (джойстик_UpDn 0) // егер джойстик өшіп, ойыншы төменгі жағында болмаса, player_y--; // егер төмен қарай жылжыңыз, егер (joystick_UpDn> 0 && player_y <7) // егер джойстик жоғары болса және ойыншы жоғарғы ойыншылар_y ++ қатарында болмаса; // жоғары көтеру модулі = player_x/8; // модульді ойыншыларға орнатыңыз жаңа позиция баған = player_x%8; // бағанды ойыншыларға орнатыңыз жаңа позиция қатар = players_y; // ойыншыларға жолды орнату lc.setLed (модуль, жол, баған, шын); // ойыншының жаңа орнында жарықдиодты қосыңыз}

Енді сіз джойстикті қостыңыз, бірінші кедергі бойынша жұмыс жасайық!

5 -қадам: Бірінші деңгей

Жарайды, енді бағдарламаның негізгі бөлігіне, кедергілерге енудің уақыты келді! Кедергілер - бұл «Әлемдегі ең қиын ойын». Егер сіз ойынды шынымен ойнағыңыз келсе, оны кодқа қосуыңыз керек:

байттық кедергі [ДЕҢГЕЙЛЕР] [САХНАЛАР] [БАҒЫТТАР] [ҚАТАРЛАР] = {// үш деңгей, 8 көрініс, 8 колум, 8 жол

{{{1, 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, 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}}, {{1, 1, 1, 1, 1, 0, 0, 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}, {1, 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}}, {{1, 1, 1, 1, 0, 0, 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}, {1, 1, 0, 0, 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}}, {{1, 1, 1, 0, 0, 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}, {1, 1, 1, 0, 0, 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}}, {{1, 1, 0, 0, 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}, {1, 1, 1, 1, 0, 0, 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}}, {{1, 0, 0, 1, 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}, { 1, 1, 1, 1, 1, 0, 0, 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, 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 }, {1, 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, 1, 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}, {1, 1, 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}}}, void setup () {initialize_modules (); // қосу және барлық төрт модульді орнату start_level (0); void loop () {move_player (); // ойыншының қозғалатындығын тексеру арқылы циклды бастау (егер collision ()) {// соқтығысу деңгейін тексеру = 0; // егер соқтығысу ақиқат болса, бастапқы деңгейдің бастапқы деңгейін қалпына келтіру (деңгей); // ойынды қайта бастаңыз} else if if (delay_count == obstacle_delay) {// егер ешқандай соқтығысу кедергі жасамаса, әр басқа кідіріс moveobstacle (); delay_count = 0; } else_count ++; кешігу (кідіріс уақыты); // ойын жылдамдығымен кешігу}

Және бұл бірінші кедергі! Егер сіз мұны бірінші деңгей ретінде жалықтырсаңыз, онда сіз байттарды өзгерте аласыз, тек сегіз түрлі сахна болуы керек екенін ұмытпаңыз! Келесі қадамды жалғастырайық, соқтығысуды анықтау!

6 -қадам: соқтығысуды анықтау

Бұл қадам - бұл ойынның тағы бір маңызды бөлігі, онымен ешқандай қиындық болмайды! сіз кедергілерден өтіп, кез келген салдарсыз өз жолыңызды тоқтата аласыз! бұл өте қызықты болмас па еді? сондықтан бағдарламаның осы бөлімін қосу арқылы ойынды күрделірек етейік (және одан да қызықты)!

void loop () {

move_player (); // ойыншының қозғалатындығын тексеру арқылы циклды бастау (егер collision ()) {// соқтығысу деңгейін тексеру = 0; // егер соқтығысу ақиқат болса, бастапқы деңгейдің бастапқы деңгейін қалпына келтіру (деңгей); // ойынды қайта бастаңыз} else if if (delay_count == obstacle_delay) {// егер ешқандай соқтығысу кедергі жасамаса, әр басқа кідіріс moveobstacle (); delay_count = 0; } else_count ++; кешігу (кідіріс уақыты); // ойын жылдамдығымен кешігу} int collision () {// ойыншының сахна модулінде кедергіге соғылғанын тексеру = players_x/8; баған = ойыншылар_х%8; қатар = ойыншылар_ж; if (модуль> 0) if (кедергі [деңгей] [көрініс] [баған] [қатар] == 1) // егер ойыншының орны кедергі қайтаруымен бірдей болса (1); // соқтығысу анықталды қайтару шынайы қайтару (0); // соқтығысудың қайтарымы жоқ жалған}

Ал міне, сіз барасыз! енді сіз ойыннан ләззат ала аласыз! Енді мен сізге ойынның соңғы екі деңгейін қалай бағдарламалау керектігін көрсетемін! Сіз бұл нұсқаулықты аяқтадыңыз, мен оны сынап көруге дайын екеніңізге сенімдімін!

7 -қадам: Соңғы екі деңгей

Нұсқаудың соңына жақындағанда, бұл соңғы екі деңгей сізге бұл ойынды аяқтау үшін қажет. Содан кейін сіз оны өзіңіз сынап көре аласыз! міне код:

байт кедергісі [ДЕҢГЕЙЛЕР] [САХНАЛАР] [БАҒЫТТАР] [ҚАТАРЛАР] = {// екінші және үшінші деңгей, 8 көрініс, 8 баған, 8 жол

{{{1, 0, 0, 0, 0, 0, 0, 1}, // екінші деңгей, бірінші көрініс {0, 1, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, { 0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 1, 0}, {1, 0, 0, 0, 0, 0, 0, 1}}, {{1, 1, 0, 0, 0, 0, 0, 1}, // екінші деңгей, екінші көрініс {0, 0, 1, 0, 0, 0, 0, 1}, {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 0, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 0, 0, 0 }, {0, 1, 0, 0, 1, 0, 0, 0}, {1, 0, 0, 0, 0, 1, 0, 0}, {1, 0, 0, 0, 0, 0, 1, 1}}, {{0, 1, 0, 0, 0, 0, 0, 0}, // екінші деңгей, үшінші көрініс {0, 0, 1, 1, 0, 0, 0, 1}, {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 0, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 0, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 0}, {0, 1, 0, 0, 0, 1, 1, 0}, {0, 0, 0, 0, 0, 0, 1, 0}}, {{0, 0, 1, 0, 0, 0, 0, 0}, // екінші деңгейдегі төртінші көрініс {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 1}, {0, 1, 1, 1, 1, 0, 1, 0}, {0, 1, 0, 1, 1, 1, 1, 0}, {1, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0}}, {{0, 0, 0, 1, 0, 0, 0, 0}, // екінші деңгей, бес ші көрініс {0, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 1, 1, 0, 0, 1}, {1, 0, 0, 1, 1, 0, 1, 0}, {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0}}, {{0, 0, 0, 0, 1, 0, 0, 0}, // екінші деңгей, алтыншы сахна {0, 0, 0, 0, 0, 1, 0, 0}, {0, 1, 1, 0, 0, 1, 0, 0}, {1, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 1, 1}, {0, 0, 1, 0, 0, 1, 1, 0}, {0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0}}, {{0, 0, 0, 0, 0, 1, 0, 0}, // екінші деңгей, жетінші көрініс {0, 0, 0, 0, 0, 1, 0, 0}, {1, 1, 1, 0, 0, 1, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 1, 1, 1}, {0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0}}, {{0, 0, 0, 0, 0, 0, 1, 0}, // екінші деңгей сегізінші көрініс {1, 1, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 1, 1}, {0, 1, 0, 0, 0, 0, 0, 0, 0}}}, {{{0, 1, 0, 0, 0, 0, 0, 1}, // үшінші деңгей, бірінші көрініс {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 1, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {0, 0, 0, 1, 0, 0, 0, 0} }, {{0, 0, 0, 0, 1, 0, 0, 1}, // үшінші деңгей, екінші көрініс {1, 0, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0}}, {{0, 1, 0, 0, 1, 0, 0, 1}, // үшінші деңгей, үшінші көрініс {0, 0, 0, 1, 0, 0, 1, 0}, { 0, 0, 0, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 0, 0}}, {{0, 0, 0, 0, 1, 0, 0, 1}, // үшінші деңгей, төртінші көрініс {1, 0, 0, 1, 0, 0, 1, 0 }, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0}}, {{0, 1, 0, 0, 1, 0, 0, 1}, // үшінші деңгей, бесінші көрініс {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 1}, {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0}}, {{0, 0, 0, 0, 1, 0, 0, 1}, // үшінші деңгей, алтыншы көрініс {1, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0}}, {{0, 1, 0, 0, 1, 0, 0, 1}, // үшінші деңгей, жетінші көрініс {0, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 0, 0}}, {{0, 0, 0, 0, 1, 0, 0, 0}, // үшінші деңгей, сегізінші көрініс { 1, 0, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0}}}};

Және бұл! Сіз әлемдегі ең қиын ойынды аяқтауға тырысасыз. Толық Arduino коды төменде берілген.

Ұсынылған: