INHOUDSOPGAWE:

Herskep die moeilikste spel ter wêreld op die Arduino: 7 stappe
Herskep die moeilikste spel ter wêreld op die Arduino: 7 stappe

Video: Herskep die moeilikste spel ter wêreld op die Arduino: 7 stappe

Video: Herskep die moeilikste spel ter wêreld op die Arduino: 7 stappe
Video: Leslie Kean on David Grusch (UFO Whistleblower): Non-Human Intelligence, Recovered UFOs, UAP, & more 2024, November
Anonim
Image
Image

Hierdie projek is gebaseer op 'n rekenaarspeletjie wat u aanlyn kan vind. Die naam is "Die wêreld se moeilikste spel." Ek kon dit op die Arduino herskep met behulp van 'n vier-module LED Matrix. In hierdie instruksies leer ek jou hoe om dit self te bou. Voordat ons te veel besonderhede bespreek, wil ek 'n vinnige oorsig gee van die stappe wat ek ondergaan het om hierdie speletjie te skep.

  1. Ek het al die nodige dele versamel.
  2. Ek het die dele met mekaar verbind.
  3. Ek het 'n skets geskryf wat die joystick gebruik het om die spelers se LED oor al die modules te beweeg.
  4. Ek het die eerste struikelblokke ontwerp en dit by die skets gevoeg sodat hulle die wêreld se moeilikste spel navolg.
  5. Ek voeg toe kode by om 'n botsing met die hindernisse op te spoor, wat die spel weer sal begin.
  6. En toe ontwerp ek nog twee vlakke van hindernisse.

Stap 1: al die dele

Al die onderdele
Al die onderdele
Al die onderdele
Al die onderdele

Hier is 'n lys van al die onderdele wat u benodig:

  1. 'N Arduino UNO en usb-aansluiting:
  2. 'N Viermodule 8x8: LED-matriks
  3. 'N Joystick:
  4. 10 manlike tot vroulike drade:

Stap 2: Hoe om die onderdele aan die Arduino te koppel

Hoe om die onderdele aan die Arduino te koppel
Hoe om die onderdele aan die Arduino te koppel

Hoe om die LED Matrix aan die Arduino te koppel

  1. GND gaan na GND
  2. VCC gaan na 5V
  3. DataIn gaan na digitale pen 12
  4. CLK gaan na digitale pen 11
  5. CS of LOAD gaan na digitale pen 10

Hoe om die joystick aan te sluit

  1. GND gaan na GND
  2. 5V gaan na 5V
  3. VRx gaan na analoog pin A0
  4. VRy gaan na analoog pen A1
  5. SW word nie gebruik nie

Die battery word gekoppel aan die 9v -aansluiting om die Arduino krag te gee

Stap 3: vloeidiagram van die program

Vloeidiagram van die program
Vloeidiagram van die program

Die ovaal dui die begin van die program aan.

Die eerste stap is om al die struikelblokke te definieer.

Die volgende twee stappe dui aan om die veranderlikes in te stel en al die modules aan te skakel.

Die volgende stap is om die LED's op die eerste vlak en enige ander veranderlikes te stel.

Vertoon vervolgens die vlak waarop die speler tans is.

Die ruit dui aan dat u die joystick lees om te sien in watter rigting dit gestoot word.

Beweeg die speler dan in die rigting waarin die joystick gedruk is.

Kyk of die speler met 'n hindernis gebots het.

As die speler 'n hindernis raak, gaan terug na die eerste vlak. Indien nie, kyk of die speler die einde van die vlak bereik het.

As die speler aan die einde van die vlak is, moet u na die volgende vlak gaan, en dan teruggaan na "Vertoon huidige vlak.". As hulle nie aan die einde is nie, beweeg die hindernisse en gaan terug na "Lees joystick."

Stap 4: Programmering van die joystick

Om die klein kolletjie wat die speler is, te skuif, het ons natuurlik 'n joystick nodig. en om die joystick in staat te stel om die speler eintlik te beweeg, moet ons dit in die Arduino IDE kodeer. U moet die LedControl -biblioteek insluit wat u kan vind deur na die sketsmenu> Biblioteke in te sluit> biblioteke te bestuur en na LedControl te soek. Hier is hoe die kode vir die joystick lyk.

#sluit "LedControl.h" in

int DataIn = 12; int CLK = 11; int DIN = 10; LedControl lc = LedControl (DataIn, CLK, DIN, 4); // Skep voorwerp vir vier modules int delaytime = 50; // spoed waarmee die spel int joystick_RtLt, joystick_UpDn loop; int spelers_x = 0; // spelers horisontale posisie van 0 tot 31 int spelers_y = 3; // spelers vertikale posisie van 0 tot 7 int ry, kolom, module; leemte opstelling () {initialize_modules (); // skakel aan en stel al vier LED -modules} leemte -lus () {move_player () in; // begin lus deur te kyk of die speler vertraging (vertragingstyd) beweeg; } ongeldig initialiseer_modules () {lc.stop (0, vals); // begin module 0 lc.setIntensity (0, 1); lc.stop (1, vals); // begin module 1 lc.setIntensity (1, 1); lc.stop (2, vals); // begin module 2 lc.setIntensity (2, 1); lc.stop (3, vals); // begin module 3 lc.setIntensity (3, 1); lc.clearDisplay (0); // maak module 0} leeg move_player () {module = spelers_x/8 skoon; // definieer watter module die speler op kolom is = spelers_x%8; // definieer die kolom waar die speler op die module ry is = spelers_y; lc.setLed (module, ry, kolom, vals); // skakel led uit op die huidige posisie van die speler joystick_RtLt = analogRead (A0)/204 - 2; // lees X -joystick en kaart wissel van 2 tot -2 as (joystick_RtLt> 0) // wanneer joystick na die regte spelers_x ++ is; // gaan regs anders as (joystick_RtLt 0) // as joystick links is en nie aan die begin spelers_x--; // skuif links joystick_UpDn = analogRead (A1)/204 - 2; // lees Y-joystick en kaart wissel van 2 tot -2 as (joystick_UpDn 0) // as joystick af is en speler nie onder is nie spelers_y--; // skuif anders as (joystick_UpDn> 0 && spelers_y <7) // as joystick op is en speler nie bo -spelers is nie_y ++; // optrek module = spelers_x/8; // stel module aan spelers nuwe posisie kolom = spelers_x%8; // stel kolom vir spelers nuwe posisie ry = spelers_j; // stel ry vir spelers nuwe posisie lc.setLed (module, ry, kolom, waar); // skakel LED aan by die speler se nuwe posisie}

Noudat u die joystick bygevoeg het, laat ons aan die eerste hindernis werk!

Stap 5: Die eerste vlak

Goed, so nou is dit tyd om die hoofdeel van die program, die struikelblokke, in te gaan! Die struikelblokke is wat dit werklik die 'wêreld se moeilikste spel' maak. As u dus die spel wil speel, moet u dit by u kode voeg:

bytehindernis [VLAKKE] [SCENES] [COLUMNS] [ROWS] = {// drie vlakke, 8 tonele, 8 kollums, 8 rye

{{{1, 1, 1, 1, 1, 1, 0, 0}, // eerste vlak, eerste toneel {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}, // eerste vlak, tweede toneel {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}, // eerste vlak, derde toneel {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, 0}}, {{1, 1, 1, 0, 0, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0, 0}, // eers vlak, vierde toneel {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}, // eerste vlak, vyfde toneel {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, 0, 0, 1, 1, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, // eerste vlak, sesde toneel {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}, // eerste vlak, sewende toneel {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}, // eerste vlak, agtste toneel {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}}}, ongeldige opstelling () {initialize_modules (); // skakel aan en stel al vier LED -modules start_level (0) in; leemte -lus () {move_player (); // begin lus deur te kyk of speler beweeg as (botsing ()) {// kyk na botsingsvlak = 0; // as botsing waar is, stel vlak begin_vlak (vlak) terug; // herbegin spel} anders as (delay_count == obstakel_vertraging) {// as daar geen hindernis is nie, elke ander vertraging beweeg obstakel (); delay_count = 0; } anders delay_count ++; vertraging (vertragingstyd); // vertraging volgens spelspoed}

En dit is die eerste hindernis! As u dit as u eerste vlak verveeld, kan u die grepe altyd verander, onthou net dat u agt verskillende tonele moet hê! Kom ons gaan voort met die volgende stap, botsingsopsporing!

Stap 6: Botsingsopsporing

Hierdie stap is nog 'n belangrike deel van die spel, daarsonder sou daar nie veel uitdagings wees nie! jy kan net deur die hindernisse vleg sonder enige gevolge! dit sou tog nie lekker wees nie? so laat ons die spel meer uitdagend (en nog baie meer vermaakliker maak) deur hierdie afdeling van die program by te voeg:

leemte -lus () {

move_player (); // begin lus deur te kyk of speler beweeg as (botsing ()) {// kyk na botsingsvlak = 0; // as botsing waar is, stel vlak begin_vlak (vlak) terug; // herbegin spel} anders as (delay_count == obstakel_vertraging) {// as daar geen hindernis is nie, elke ander vertraging beweeg obstakel (); delay_count = 0; } anders delay_count ++; vertraging (vertragingstyd); // vertraging met spoed van spel} int botsing () {// kyk of speler 'n hindernis in toneelmodule getref het = spelers_x/8; kolom = spelers_x%8; ry = spelers_j; if (module> 0) if (hindernis [vlak] [toneel] [kolom] [ry] == 1) // as speler se posisie dieselfde is as hindernisretour (1); // botsing opgespoor terugkeer ware opbrengs (0); // geen botsingsopgawe vals nie}

En daar gaan jy! nou kan u die spel nog baie meer geniet! Nou gaan ek jou wys hoe om die laaste twee vlakke van die spel te programmeer! jy is amper klaar met hierdie instruksies, en ek is seker dat jy gereed is om dit te probeer!

Stap 7: Die laaste twee vlakke

Aan die einde van die instruksies, is hierdie laaste twee vlakke al wat u nodig het om hierdie speletjie te voltooi. Dan kan u dit self probeer! hier is die kode:

bytehindernis [VLAKKE] [SCENES] [COLUMNS] [ROWS] = {// tweede en derde vlak, 8 tonele, 8 kolomme, 8 rye

{{{1, 0, 0, 0, 0, 0, 0, 1}, // tweede vlak, eerste toneel {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}, // tweede vlak, tweede toneel {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}, // tweede vlak, derde toneel {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}, // tweede vlak vierde toneel {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}, // tweede vlak, fif toneel {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}, // tweede vlak, sesde toneel {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}, // tweede vlak, sewende toneel {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}, // tweede vlak agtste toneel {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}, // derde vlak, eerste toneel {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}, // derde vlak, tweede toneel {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}, // derde vlak, derde toneel {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}, // derde vlak, vierde toneel {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}, // derde vlak, vyfde toneel {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}, // derde vlak, sesde toneel {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}, // derde vlak, sewende toneel {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}, // derde vlak, agtste toneel { 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}}}};

En dit is dit! jy is gereed om die wêreld se moeilikste spel te voltooi. Hieronder is ook die volledige Arduino -kode aangeheg.

Aanbeveel: