
Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-23 14:47


Ovaj projekt temelji se na računalnoj igri koju možete pronaći na internetu. Njegovo ime je "Najteža igra na svijetu". Uspio sam ga ponovno stvoriti na Arduinu pomoću LED matrice s četiri modula. U ovom uputstvu učit ću vas kako ga sami konstruirati. Prije nego što pređemo na previše detalja, želim dati kratak pregled koraka koje sam prošao za stvaranje ove igre.
- Skupio sam sve potrebne dijelove.
- Spojio sam dijelove zajedno.
- Napisao sam skicu koja je pomoću joysticka prebacila LED diode igrača po svim modulima.
- Dizajnirao sam prve prepreke i dodao ih u skicu tako da oponašaju najtežu igru na svijetu.
- Zatim sam dodao kod za otkrivanje sudara s preprekama, koji će ponovo pokrenuti igru.
- Zatim sam dizajnirao još dvije razine prepreka.
Korak 1: Svi dijelovi


Evo popisa svih dijelova koji su vam potrebni:
- Arduino UNO i USB priključak:
- Četiri modula 8x8: LED matrica
- Joystick:
- 10 muških i ženskih žica:
Korak 2: Kako spojiti dijelove na Arduino

Kako spojiti LED matricu na Arduino
- GND ide u GND
- VCC ide na 5V
- DataIn ide na digitalni pin 12
- CLK ide na digitalni pin 11
- CS ili LOAD ide na digitalni pin 10
Kako spojiti joystick
- GND ide u GND
- 5V ide na 5V
- VRx ide na analogni pin A0
- VRy ide na analogni pin A1
- SW se ne koristi
Baterija se priključuje na utičnicu od 9V kako bi Arduino dobio snagu
Korak 3: Dijagram toka programa

Oval označava početak programa.
Prvi korak je definiranje svih prepreka.
Sljedeća dva koraka pokazuju postavljanje varijabli i uključivanje svih modula.
Sljedeći korak je postavljanje LED dioda na prvu razinu i sve ostale varijable.
Sljedeći prikaz razine na kojoj je igrač trenutno na.
Romb označava čitanje upravljačke palice kako bi vidio u kojem se smjeru gura.
Zatim pomaknite player u bilo kojem smjeru gurnute palice.
Provjerite je li se igrač sudario s preprekom.
Ako je igrač udario u prepreku, vratite se na prvu razinu. Ako nije, provjerite je li igrač došao do kraja razine.
Ako je igrač na kraju razine, postavite na sljedeću razinu, a zatim se vratite na "Prikaz trenutne razine". Ako nisu na kraju, pomaknite prepreke i vratite se na "Read Joystick".
Korak 4: Programiranje joysticka
Naravno, da bismo pomaknuli malu točku koja je igrač, potreban nam je joystick. a da bismo dopustili da joystick stvarno premjesti player moramo ga kodirati u Arduino IDE. Morate uključiti knjižnicu LedControl koju možete pronaći tako da odete na izbornik skica> Uključi knjižnice> upravljajte knjižnicama i potražite LedControl. Evo kako izgleda kôd za joystick.
#include "LedControl.h"
int DataIn = 12; int CLK = 11; int DIN = 10; LedControl lc = LedControl (DataIn, CLK, DIN, 4); // Kreira objekt za četiri modula int delaytime = 50; // brzina kojom igra radi int joystick_RtLt, joystick_UpDn; int player_x = 0; // vodoravna pozicija igrača od 0 do 31 int player_y = 3; // okomiti položaj igrača od 0 do 7 int reda, stupca, modula; void setup () {initialize_modules (); // uključiti i postaviti sva četiri LED modula} void loop () {move_player (); // pokretanje petlje provjerom pomiče li igrač kašnjenje (vrijeme odgode); } void initialize_modules () {lc.shutdown (0, false); // pokreće modul 0 lc.setIntensity (0, 1); lc.shutdown (1, netočno); // pokreće modul 1 lc.setIntensity (1, 1); lc.shutdown (2, netočno); // pokreće modul 2 lc.setIntensity (2, 1); lc.shutdown (3, lažno); // pokreće modul 3 lc.setIntensity (3, 1); lc.clearDisplay (0); // briše modul 0} void move_player () {module = players_x/8; // definira koji modul je igrač u stupcu = players_x%8; // definira stupac u kojem se igrač nalazi u retku modula = players_y; lc.setLed (modul, red, stupac, false); // isključuje LED na trenutnoj poziciji igrača joystick_RtLt = analogRead (A0)/204 - 2; // čitati X -joystick i raspon karte od 2 do -2 if (joystick_RtLt> 0) // kada je joystick na desnoj strani player_x ++; // idite desno, ako (joystick_RtLt 0) // ako je joystick lijevo, a ne na početku players_x--; // pomakni lijevo joystick_UpDn = analogRead (A1)/204 - 2; // čita Y-joystick i raspon karte od 2 do -2 if (joystick_UpDn 0) // ako je joystick dolje i igrač nije na dnu players_y--; // pomaknite se dolje else if (joystick_UpDn> 0 && players_y <7) // ako je joystick gore, a igrač nije na vrhu players_y ++; // gore modul = players_x/8; // postavi modul igračima nova pozicija stupac = players_x%8; // postavljanje stupca igračima nova pozicija red = players_y; // postavi red igračima novu poziciju lc.setLed (modul, red, stupac, true); // uključite LED na novom mjestu igrača}
Sad kad ste dodali joystick, poradimo na prvoj prepreci!
Korak 5: Prva razina
U redu, sada je vrijeme da prijeđete na glavni dio programa, na prepreke! Prepreke su ono što ovu igru doista čini "najtežom igrom na svijetu". Dakle, ako zaista želite igrati igru, morate dodati ovo svom kodu:
prepreka od bajtova [LEVELS] [SCENES] [COLUMNS] [ROWS] = {// tri razine, 8 scena, 8 dogovora, 8 redaka
{{{1, 1, 1, 1, 1, 1, 0, 0}, // prva razina, prva scena {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 0}}, {{1, 1, 1, 1, 1, 0, 0, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, // prva razina, druga scena {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}}, {{1, 1, 1, 1, 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, // prva razina, treća prizor {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}, // prvo razina, četvrta scena {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}, // prva razina, peta scena {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}, {0, 0, 0, 0, 0, 0, 0, 0}, // prva razina, šesta scena {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}, // prva razina, sedma scena {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, 1, 1, 1, 1, 1, 1, 1, 1}, // prva razina, osma prizor {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 (); // uključiti i postaviti sva četiri LED modula start_level (0); void loop () {move_player (); // pokretanje petlje provjerom da li se igrač pomiče if (collision ()) {// provjera razine sudara = 0; // ako je sudar istinit, resetiraj razinu start_level (level); // ponovno pokretanje igre} else if (delay_count == prepreka_odgoda) {// ako nema sudara pomicanje prepreka svako drugo kašnjenje moveobstacle (); broj_kašnjenja = 0; } else delay_count ++; odgoda (vrijeme odgode); // kašnjenje po brzini igre}
I to je prva prepreka! Ako vam je ovo dosadilo kao vašoj prvoj razini, uvijek možete promijeniti bajtove, samo zapamtite da morate imati osam različitih scena! Idemo na sljedeći korak, otkrivanje sudara!
Korak 6: Otkrivanje sudara
Ovaj korak je još jedan važan dio igre, jer bez njega ne bi bio veliki izazov! mogli biste se samo probiti kroz prepreke bez ikakvih posljedica! to ne bi bilo zabavno zar ne? pa učinimo igru izazovnijom (i puno zabavnijom!) dodavanjem ovog odjeljka programa:
void loop () {{100} {101}
move_player (); // pokretanje petlje provjerom da li se igrač pomiče if (collision ()) {// provjera razine sudara = 0; // ako je sudar istinit, resetiraj razinu start_level (level); // ponovno pokretanje igre} else if (delay_count == prepreka_odgoda) {// ako nema sudara pomicanje prepreka svako drugo kašnjenje moveobstacle (); broj_kašnjenja = 0; } else delay_count ++; odgoda (vrijeme odgode); // kašnjenje po brzini igre} int collision () {// provjerava je li igrač udario u prepreku u modulu scene = players_x/8; stupac = players_x%8; red = igrači_y; if (modul> 0) if (prepreka [razina] [scena] [stupac] [redak] == 1) // ako je položaj igrača isti kao povratak prepreke (1); // sudar otkriven return true return (0); // no collision return false}
I eto! sada možete uživati u igri puno više! Sada ću vam pokazati kako programirati posljednje dvije razine igre! Skoro ste završili s ovim uputstvom, i siguran sam da ste spremni isprobati ga!
Korak 7: Posljednje dvije razine
Dolazili su do kraja nastave, ove dvije razine su sve što vam je potrebno da završite ovu igru. Onda možete sami isprobati! evo koda:
bajtna prepreka [LEVELS] [SCENES] [COLUMNS] [ROWS] = {// druga i treća razina, 8 scena, 8 stupaca, 8 redaka
{{{1, 0, 0, 0, 0, 0, 0, 1}, // druga razina, prva scena {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}, // druga razina, druga scena {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}, // druga razina, treća scena {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}, // četvrta scena druge razine {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}, // druga razina, pet scena {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}, // druga razina, šesta scena {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}, // druga razina, sedma scena {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}, // osma scena druge razine {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, 1, 0, 0, 0, 0, 0, 1}, // treća razina, prva scena {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}, // treća razina, druga scena {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}, // treća razina, treća scena {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}, // treća razina, četvrta scena {1, 0, 0, 1, 0, 0, 1, 0 }, {0, 0, 1, 0, 0, 1, 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, 0, 0, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0}}, {{0, 1, 0, 0, 1, 0, 0, 1}, // treća razina, peta scena {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}, // treća razina, šesta scena {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}, // treća razina, sedma scena {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}, // treća razina, osma scena { 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}}}};
I to je to! spremni ste za pokušaj dovršetka najteže igre na svijetu. Također je dolje priložen cijeli Arduino kod.
Preporučeni:
Stvaranje igre obrane tornja u stvarnom životu: 11 koraka

Stvaranje igre obrane tornja u stvarnom životu: Zdravo, mi smo GBU! Naš tim dobio je zadatak u našem VG100, Uvod u inženjering, klasa: dizajnirati i izgraditi Warzone Tower Defense igru iz stvarnog života. VG100 je temeljna klasa koju svi brucoši moraju pohađati na Zajedničkom institutu (JI.) Zajednička ustanova
Greentent - prva mini prijenosna staklena kuća na svijetu s mjerenjima temperature i vlažnosti u Arduinu: 3 koraka

Greentent - prva mini prijenosna staklena kuća na svijetu s mjerenjima temperature i vlažnosti u Arduinu: Prvi put sam došao na ideju o prijenosnom stakleniku po kojem se možete kretati noću kada sam htio napraviti način da imam mali vrt u kutiji s nadziranom temperaturom pa vlaga. Dakle, kasno je navečer i želim otići u trgovinu po ove su
Arduino kontroler za igre DIY - Arduino PS2 kontroler igre - Igranje Tekkena s DIY Arduino gamepadom: 7 koraka

Arduino kontroler za igre DIY | Arduino PS2 kontroler igre | Igranje Tekkena s DIY Arduino gamepad -om: Zdravo dečki, igranje igara uvijek je zabavno, ali igranje sa vlastitim DIY prilagođenim kontrolorom igara je zabavnije. Zato ćemo u ovim uputama napraviti kontroler igre pomoću arduino pro micro
Stvaranje fizičkog kontrolera igre: 10 koraka (sa slikama)

Stvaranje kontrolera fizičkih igara: Kada je Nintendo Wii predstavljen, igrači su bili potaknuti, nije potrebno, da napuste kauč i skoče, plešu i trzaju kako bi osvojili bodove u svojoj igri. Iako postoji strma krivulja učenja u izgradnji za Wii, lako je kupiti
DIY MusiLED, glazbeno sinkronizirane LED diode s Windows i Linux aplikacijom jednim klikom (32-bitne i 64-bitne). Lako za ponovno stvaranje, za korištenje, za prijenos: 3 koraka

DIY MusiLED, glazbeno sinkronizirane LED diode s Windows-om i Linux aplikacijom jednim klikom (32-bitne i 64-bitne). Lako za ponovno stvaranje, za korištenje, za prijenos: Ovaj projekt će vam pomoći da spojite 18 LED dioda (6 crvenih + 6 plavih + 6 žutih) na svoju Arduino ploču i analizirate signale zvučne kartice vašeg računala u stvarnom vremenu i prenesete ih na LED diode koje će ih osvijetliti prema beat efektima (Snare, High Hat, Kick)