Tartalomjegyzék:

A világ legnehezebb játékának újrateremtése az Arduino -n: 7 lépés
A világ legnehezebb játékának újrateremtése az Arduino -n: 7 lépés

Videó: A világ legnehezebb játékának újrateremtése az Arduino -n: 7 lépés

Videó: A világ legnehezebb játékának újrateremtése az Arduino -n: 7 lépés
Videó: Samadhi 1: Az én illúziója magyar Hungarian 2024, Július
Anonim
Image
Image

Ez a projekt egy online játékon alapuló számítógépes játékon alapul. A neve: "A világ legnehezebb játéka". Újra tudtam létrehozni az Arduino-n egy négy modulos LED-mátrix segítségével. Ebben az utasításban megtanítom, hogyan kell saját maga konstruálni. Mielőtt túl sok részletbe ütközünk, szeretnék egy gyors áttekintést adni a játék létrehozásának lépéseiről.

  1. Összeszedtem az összes szükséges alkatrészt.
  2. Összekötöttem az alkatrészeket.
  3. Írtam egy vázlatot, amely a joystick segítségével mozgatta a játékosok LED -jét az összes modulon.
  4. Megterveztem az első akadályokat, és hozzáadtam őket a vázlathoz, így azok utánozták a világ legnehezebb játékát.
  5. Ezután hozzáadtam egy kódot, hogy észleljem az ütközést az akadályokkal, ami újraindítja a játékot.
  6. Aztán megterveztem még két akadályszintet.

1. lépés: Minden alkatrész

Minden alkatrész
Minden alkatrész
Minden alkatrész
Minden alkatrész

Itt található az összes szükséges alkatrész listája:

  1. Arduino UNO és usb csatlakozó:
  2. Négy modul 8x8: LED mátrix
  3. Joystick:
  4. 10 db férfi-női vezeték:

2. lépés: Az alkatrészek csatlakoztatása az Arduino -hoz

Az alkatrészek csatlakoztatása az Arduino -hoz
Az alkatrészek csatlakoztatása az Arduino -hoz

A LED -mátrix csatlakoztatása az Arduino -hoz

  1. A GND a GND -hez megy
  2. A VCC 5V -ra megy
  3. A DataIn a 12 -es digitális tűre megy
  4. A CLK a 11 -es digitális csaphoz megy
  5. A CS vagy a LOAD a 10 -es digitális tűre megy

A joystick csatlakoztatása

  1. A GND a GND -hez megy
  2. 5V megy 5V -ra
  3. A VRx az A0 analóg érintkezőre megy
  4. A VRy az A1 analóg érintkezőhöz megy
  5. Az SW -t nem használják

Az akkumulátor csatlakozik a 9V -os aljzathoz, hogy áramot adjon az Arduino -nak

3. lépés: A program folyamatábrája

A program folyamatábrája
A program folyamatábrája

Az ovális jelzi a program kezdetét.

Az első lépés az összes akadály meghatározása.

A következő két lépés a változók beállítását és az összes modul bekapcsolását jelzi.

A következő lépés a LED -ek első szintre állítása és minden egyéb változó.

Ezután jelenítse meg a lejátszó aktuális szintjét.

A rombusz jelzi a joystick olvasását, hogy lássa, milyen irányba tolja.

Ezután mozgassa a lejátszót a botkormány bármely irányába.

Ellenőrizze, hogy a játékos nem ütközött -e akadályba.

Ha a játékos ütközik egy akadályba, menjen vissza az első szintre. Ha nem, ellenőrizze, hogy a játékos elérte -e a szint végét.

Ha a játékos a szint végén van, állítsa a következő szintre, majd térjen vissza az "Aktuális szint megjelenítése" szakaszhoz. Ha nincsenek a végén, mozgassa az akadályokat, és térjen vissza a "Joystick olvasása" szakaszhoz.

4. lépés: A joystick programozása

Természetesen ahhoz, hogy elmozdítsuk a kis pontot, ami a játékos, szükségünk van egy joystickra. és ahhoz, hogy a joystick valóban mozgassa a lejátszót, kódolnunk kell az Arduino IDE -ben. Meg kell adnia a LedControl könyvtárat, amelyet a vázlat menü> Könyvtárak beillesztése> könyvtárak kezelése és LedControl keresésével talál. Így néz ki a joystick kódja.

#include "LedControl.h"

int DataIn = 12; int CLK = 11; int DIN = 10; LedControl lc = LedControl (DataIn, CLK, DIN, 4); // Objektumot hoz létre négy modulhoz int delaytime = 50; // a játék futásának sebessége int joystick_RtLt, joystick_UpDn; int játékosok_x = 0; // a játékosok vízszintes helyzete 0 -tól 31 -ig int játékosok_y = 3; // játékosok függőleges helyzete 0 -tól 7 -ig int sor, oszlop, modul; void setup () {initialize_modules (); // mind a négy led modul bekapcsolása és beállítása} void loop () {move_player (); // indítsa el a ciklust annak ellenőrzésével, hogy a játékos mozog -e késleltetést (delaytime); } void initialize_modules () {lc.shutdown (0, false); // elindítja a 0 modult lc.setIntensity (0, 1); lc.sutdown (1, false); // elindítja az 1. modult lc.setIntensity (1, 1); lc.sutdown (2, false); // elindítja a 2. modult lc.setIntensity (2, 1); lc.sutdown (3, false); // elindítja a 3. modult lc.setIntensity (3, 1); lc.clearDisplay (0); // törli a 0 -ás modult} void move_player () {module = players_x/8; // meghatározza, hogy a lejátszó melyik modulon található oszlopban = players_x%8; // meghatározza azt az oszlopot, ahol a játékos a modul sorában található = players_y; lc.setLed (modul, sor, oszlop, hamis); // kapcsolja ki a ledet a játékos jelenlegi helyzetében joystick_RtLt = analogRead (A0)/204 - 2; // olvassa az X -joystickot és a térképtartományt 2 -től -2 -ig, ha (joystick_RtLt> 0) // amikor a joystick a megfelelő játékosok felé van_x ++; // menj jobbra, ha if (joystick_RtLt 0) // ha a joystick balra van és nem az elején player_x--; // balra mozgatás joystick_UpDn = analogRead (A1)/204 - 2; // olvassa az Y-joystickot és a térképtartományt 2-től -2-ig, ha (joystick_UpDn 0) // ha a joystick le van állítva, és a játékos nincs az alsó játékosoknál_y--; // lépj lejjebb, ha (joystick_UpDn> 0 && players_y <7) // ha a joystick fent van, és a játékos nincs a legjobb játékosoknál_y ++; // felmenő modul = player_x/8; // a modul beállítása játékosokra új pozíció oszlop = players_x%8; // az oszlop beállítása a játékosokra új pozíció sor = játékosok_y; // sor beállítása játékosoknak új pozíció lc.setLed (modul, sor, oszlop, igaz); // kapcsolja be a ledet a játékos új pozíciójában}

Most, hogy hozzáadta a joystickot, dolgozzunk az első akadályon!

5. lépés: Az első szint

Rendben, akkor most itt az ideje, hogy belevágjunk a program fő részébe, az akadályokba! Az akadályok teszik igazán ezt a "világ legnehezebb játékává". Tehát ha valóban játszani szeretne a játékkal, akkor ezt hozzá kell adnia a kódjához:

bájt akadály [LEVELS] [SCENES] [COLUMNS] [ROWS] = {// három szint, 8 jelenet, 8 collums, 8 sor

{{{1, 1, 1, 1, 1, 1, 0, 0}, // első szint, első jelenet {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, 0}}, {{1, 1, 1, 1, 1, 0, 0, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, // első szint, második jelenet {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}, // első szint, harmadik jelenet {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}, // első szint, negyedik jelenet {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}, // első szint, ötödik jelenet {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}, // első szint, hatodik jelenet {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, 0, 1, 1, 1, 1, 1, 1}, // első szint, hetedik jelenet {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, 1}, // első szint, nyolcadik jelenet {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 (); // kapcsolja be és állítsa be mind a négy led modult start_level (0); void loop () {move_player (); // indítsa el a ciklust annak ellenőrzésével, hogy a játékos mozog -e, ha (ütközés ()) {// ellenőrizze az ütközési szintet = 0; // ha az ütközés igaz, reset level start_level (level); // játék újraindítása} else if (delay_count == akadály_késleltetés) {// ha nincs ütközésmozgás akadály minden más késleltetés moveobstacle (); delay_count = 0; } else delay_count ++; késleltetés (késleltetési idő); // késés a játék gyorsasága miatt}

És ez az első akadály! Ha ezt unod első szintként, akkor mindig megváltoztathatod a bájtokat, ne feledd, hogy nyolc különböző jelenet kell! Folytassuk a következő lépéssel, az ütközésérzékeléssel!

6. lépés: Ütközésérzékelés

Ez a lépés a játék másik fontos része, anélkül nem lenne nagy kihívás! csak átszövi az utat az akadályokon, minden következmény nélkül! nem lenne túl szórakoztató ugye? így tegyük a játékot kihívóbbá (és sokkal szórakoztatóbbá!) a program ezen részének hozzáadásával:

void loop () {

move_player (); // indítsa el a ciklust annak ellenőrzésével, hogy a játékos mozog -e, ha (ütközés ()) {// ellenőrizze az ütközési szintet = 0; // ha az ütközés igaz, reset level start_level (level); // játék újraindítása} else if (delay_count == akadály_késleltetés) {// ha nincs ütközésmozgás akadály minden más késleltetés moveobstacle (); delay_count = 0; } else delay_count ++; késleltetés (késleltetési idő); // késleltetés a játék sebességével} int collision () {// ellenőrizze, hogy a játékos ütközik -e akadályba a jelenetmodulban = players_x/8; oszlop = játékosok_x%8; sor = játékosok_y; if (modul> 0) if (akadály [szint] [jelenet] [oszlop] [sor] == 1) // ha a játékos helyzete megegyezik az akadály visszatérésével (1); // ütközés észlelt return true return (0); // nincs ütközés visszatérési hamis}

És tessék! most sokkal jobban élvezheti a játékot! Most megmutatom, hogyan kell programozni a játék utolsó két szintjét! majdnem kész vagy ezzel az oktatási lehetőséggel, és biztos vagyok benne, hogy készen állsz arra, hogy kipróbáld!

7. lépés: Az utolsó két szint

Az oktatható végéhez közeledve ez az utolsó két szint elegendő a játék befejezéséhez. Akkor kipróbálhatod magad! itt a kód:

bájt akadály [LEVELS] [SCENES] [COLUMNS] [ROWS] = {// második és harmadik szint, 8 jelenet, 8 oszlop, 8 sor

{{{1, 0, 0, 0, 0, 0, 0, 1}, // második szint, első jelenet {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}, // második szint, második jelenet {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}, // második szint, harmadik jelenet {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}, // második szint negyedik jelenete {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}, // második szint, ötödik th jelenet {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}, // második szint, hatodik jelenet {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}, // második szint, hetedik jelenet {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}, // második szint nyolcadik jelenete {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}, // harmadik szint, első jelenet {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}, // harmadik szint, második jelenet {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}, // harmadik szint, harmadik jelenet {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}, // harmadik szint, negyedik jelenet {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}, // harmadik szint, ötödik jelenet {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}, // harmadik szint, hatodik jelenet {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}, // harmadik szint, hetedik jelenet {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}, // harmadik szint, nyolcadik jelenet { 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}}}};

És ez az! készen áll a világ legnehezebb játékának befejezésére. Az alábbiakban a teljes Arduino kódot is csatoljuk.

Ajánlott: