Obsah:

Obnovení nejtěžší hry na světě na Arduinu: 7 kroků
Obnovení nejtěžší hry na světě na Arduinu: 7 kroků

Video: Obnovení nejtěžší hry na světě na Arduinu: 7 kroků

Video: Obnovení nejtěžší hry na světě na Arduinu: 7 kroků
Video: TOP 10 Tajné funkce mobilu o kterých 90% lidí neví 2024, Červenec
Anonim
Image
Image

Tento projekt je založen na počítačové hře, kterou můžete najít online. Jmenuje se „Nejtěžší hra na světě“. Byl jsem schopen jej znovu vytvořit na Arduinu pomocí čtyřmodulové LED matice. V tomto návodu vás naučím, jak si jej postavit sami. Než se dostaneme k příliš mnoha podrobnostem, chci poskytnout rychlý přehled o krocích, kterými jsem tuto hru vytvořil.

  1. Shromáždil jsem všechny potřebné díly.
  2. Spojil jsem díly dohromady.
  3. Napsal jsem skicu, která pomocí joysticku přesunula LED hráče přes všechny moduly.
  4. Navrhl jsem první překážky a přidal je do náčrtu, aby napodobovaly nejtěžší hru na světě.
  5. Poté jsem přidal kód pro detekci kolize s překážkami, což hru restartuje.
  6. A pak jsem navrhl další dvě úrovně překážek.

Krok 1: Všechny části

Všechny díly
Všechny díly
Všechny díly
Všechny díly

Zde je seznam všech potřebných dílů:

  1. Konektor Arduino UNO a USB:
  2. Čtyři moduly 8x8: LED matice
  3. Joystick:
  4. 10 kabelů samec-samice:

Krok 2: Jak připojit součásti k Arduinu

Jak připojit díly k Arduinu
Jak připojit díly k Arduinu

Jak připojit LED matici k Arduinu

  1. GND jde do GND
  2. VCC jde na 5V
  3. DataIn jde na digitální pin 12
  4. CLK přechází na digitální pin 11
  5. CS nebo LOAD přejde na digitální pin 10

Jak připojit joystick

  1. GND jde do GND
  2. 5V jde na 5V
  3. VRx jde na analogový pin A0
  4. VRy jde na analogový pin A1
  5. SW se nepoužívá

Baterie se připojuje ke konektoru 9 V a dodává energii Arduinu

Krok 3: Vývojový diagram programu

Vývojový diagram programu
Vývojový diagram programu

Ovál označuje začátek programu.

Prvním krokem je definovat všechny překážky.

Další dva kroky ukazují nastavení proměnných a zapnutí všech modulů.

Dalším krokem je nastavení LED na první úroveň a další proměnné.

Dále zobrazte úroveň, na které je hráč aktuálně.

Kosočtverec ukazuje čtení joysticku, aby zjistil, jakým směrem se tlačí.

Poté přesuňte přehrávač jakýmkoli směrem, na který byl joystick zatlačen.

Zkontrolujte, zda hráč nenarazil na překážku.

Pokud hráč narazí na překážku, vraťte se na první úroveň. Pokud ne, zkontrolujte, zda hráč dosáhl konce úrovně.

Pokud je hráč na konci úrovně, nastavte ji na další úroveň a pak se vraťte na „Zobrazit aktuální úroveň“. Pokud nejsou na konci, přesuňte překážky a vraťte se na „Číst joystick“.

Krok 4: Programování joysticku

Samozřejmě, abychom posunuli malou tečku, kterou je hráč, potřebujeme joystick. a abychom umožnili joysticku skutečně přesunout hráče, musíme jej kódovat v Arduino IDE. Musíte zahrnout knihovnu LedControl, kterou najdete v nabídce skici> Zahrnout knihovny> spravovat knihovny a vyhledat LedControl. Zde vypadá kód joysticku.

#include "LedControl.h"

int DataIn = 12; int CLK = 11; int DIN = 10; LedControl lc = LedControl (DataIn, CLK, DIN, 4); // Vytvoří objekt pro čtyři moduly int delaytime = 50; // rychlost, jakou hra běží int joystick_RtLt, joystick_UpDn; int hráči_x = 0; // hráči horizontální pozice od 0 do 31 int hráči_y = 3; // hráči vertikální pozice od 0 do 7 int řádek, sloupec, modul; void setup () {initialize_modules (); // zapněte a nastavte všechny čtyři LED moduly} void loop () {move_player (); // spusťte smyčku kontrolou, zda se hráč pohybuje se zpožděním (zpoždění); } void initialize_modules () {lc.shutdown (0, false); // spouští modul 0 lc.setIntensity (0, 1); lc.shutdown (1, false); // spouští modul 1 lc.setIntensity (1, 1); lc.shutdown (2, false); // spouští modul 2 lc.setIntensity (2, 1); lc.shutdown (3, false); // spouští modul 3 lc.setIntensity (3, 1); lc.clearDisplay (0); // vymaže modul 0} neplatný move_player () {modul = players_x/8; // definuje, ve kterém modulu se hráč nachází, sloupec = players_x%8; // definuje sloupec, kde je hráč na řádku modulu = players_y; lc.setLed (modul, řádek, sloupec, false); // vypnout LED na aktuální pozici hráče joystick_RtLt = analogRead (A0)/204 - 2; // čtení X -joysticku a rozsahu mapy od 2 do -2 if (joystick_RtLt> 0) // když je joystick vpravo players_x ++; // jděte doprava jinak if (joystick_RtLt 0) // pokud je joystick vlevo a ne na začátku players_x--; // pohyb doleva joystick_UpDn = analogRead (A1)/204 - 2; // čte Y-joystick a rozsah mapy od 2 do -2 if (joystick_UpDn 0) // pokud je joystick dole a hráč není dole hráči_y--; // pohyb dolů dolů if (joystick_UpDn> 0 && players_y <7) // pokud je joystick nahoře a hráč není na špičce players_y ++; // jít nahoru modul = players_x/8; // nastavení modulu na hráče nová pozice sloupec = players_x%8; // nastavení sloupce na hráče nová pozice řádek = players_y; // nastavení řádku hráčům nová pozice lc.setLed (modul, řádek, sloupec, true); // zapnout LED na nové pozici hráče}

Nyní, když jste přidali joystick, pojďme pracovat na první překážce!

Krok 5: První úroveň

Dobře, tak teď je čas se dostat k hlavní části programu, překážkám! Překážky jsou tím, co ve skutečnosti dělá tuto „nejtěžší hru světa“. Pokud tedy chcete hru skutečně hrát, musíte do kódu přidat toto:

bajtová překážka [LEVELS] [SCENES] [COLUMNS] [ROWS] = {// tři úrovně, 8 scén, 8 sloupců, 8 řádků

{{{1, 1, 1, 1, 1, 1, 0, 0}, // první úroveň, první scéna {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, 0}}, {{1, 1, 1, 1, 1, 0, 0, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, // první úroveň, druhá scéna {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}, // první úroveň, třetí scéna {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}, // první úroveň, čtvrtá scéna {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}, // první úroveň, pátá scéna {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, 0}}, {{1, 0, 0, 1, 1, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, // první úroveň, šestá scéna {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}}, {{0, 0, 1, 1, 1, 1, 1, 1}, // první úroveň, sedmá scéna {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, 0, 0}}, {{0, 1, 1, 1, 1, 1, 1, 1}, // první úroveň, osmá scéna {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} 0}}}, neplatné nastavení () {initialize_modules (); // zapněte a nastavte všechny čtyři LED moduly start_level (0); void loop () {move_player (); // spusťte smyčku kontrolou, zda se hráč pohybuje, pokud (kolize ()) {// kontrola úrovně kolize = 0; // pokud kolize true, resetovat úroveň start_level (úroveň); // restart hry} else if (delay_count == delay_count = 0; } else delay_count ++; zpoždění (doba zpoždění); // zpoždění podle rychlosti hry}

A to je první překážka! Pokud vás to začne nudit jako první úroveň, můžete vždy změnit bajty, ale pamatujte, že potřebujete osm různých scén! Pokračujme k dalšímu kroku, detekci kolizí!

Krok 6: Detekce kolize

Tento krok je další důležitou součástí hry, protože bez ní by nebyla velká výzva! mohli byste si jednoduše protnout překážky bez jakýchkoli následků! to by nebyla moc zábava ne? přidejme tedy tuto část programu:

prázdná smyčka () {

move_player (); // spusťte smyčku kontrolou, zda se hráč pohybuje, pokud (kolize ()) {// kontrola úrovně kolize = 0; // pokud kolize true, resetovat úroveň start_level (úroveň); // restart hry} else if (delay_count == delay_count = 0; } else delay_count ++; zpoždění (doba zpoždění); // zpoždění podle rychlosti hry} int kolize () {// zkontrolujte, zda hráč narazil na překážku v modulu scény = players_x/8; sloupec = hráči_x%8; řada = players_y; if (modul> 0) if (překážka [úroveň] [scéna] [sloupec] [řádek] == 1) // pokud je pozice hráče stejná jako návrat překážky (1); // detekována kolize return true return (0); // žádná kolize return false}

A je to! nyní si můžete hru užít mnohem více! Nyní vám ukážu, jak naprogramovat poslední dvě úrovně hry! s tímto návodem jste téměř hotovi a jsem si jist, že jste připraveni to vyzkoušet!

Krok 7: Poslední dvě úrovně

Blížili se ke konci instruktáže, tyto poslední dvě úrovně jsou vše, co potřebujete k dokončení této hry. Pak si to můžete sami vyzkoušet! zde je kód:

byte překážka [LEVELS] [SCENES] [COLUMNS] [ROWS] = {// druhá a třetí úroveň, 8 scén, 8 sloupců, 8 řádků

{{{1, 0, 0, 0, 0, 0, 0, 1}, // druhá úroveň, první scéna {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, 0, 1, 1, 0, 0, 0}, { 0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 1, 0}, {1, 0, 0, 0, 0, 0, 0, 0, 1}}, {{1, 1, 0, 0, 0, 0, 0, 1}, // druhá úroveň, druhá scéna {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, 0, 1, 0, 0}, {1, 0, 0, 0, 0, 0, 1, 1}}, {{0, 1, 0, 0, 0, 0, 0, 0}, // druhá úroveň, třetí scéna {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}, // čtvrtá scéna druhé úrovně {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, // druhá úroveň, pad scéna {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}, // druhá úroveň, šestá scéna {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, 0, 1, 0, 0}, // druhá úroveň, sedmá scéna {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, 0, 0, 1, 0}, // osmá scéna druhé úrovně {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, 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}, // třetí úroveň, první scéna {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}, // třetí úroveň, druhá scéna {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}, // třetí úroveň, třetí scéna {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}, // třetí úroveň, čtvrtá scéna {1, 0, 0, 1, 0, 0, 1, 0 }, {0, 0, 1, 0, 0, 1, 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, 0, 0, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0}}, {{0, 1, 0, 0, 1, 0, 0, 1}, // třetí úroveň, pátá scéna {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}, // třetí úroveň, šestá scéna {1, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 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, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0}}, {{0, 1, 0, 0, 1, 0, 0, 1}, // třetí úroveň, sedmá scéna {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}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 0, 0}}, {{0, 0, 0, 0, 1, 0, 0, 0}, // třetí úroveň, osmá scéna { 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}}}};

A to je vše! jste připraveni dokončit nejtěžší hru na světě. Níže je také připojen celý kód Arduino.

Doporučuje: