Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2014:led-tetris

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
2014:led-tetris [2015/01/18 16:09]
Matej Hojdík
2014:led-tetris [2015/01/18 22:07] (aktuální)
Matej Hojdík [Záver]
Řádek 100: Řádek 100:
 Od tejto súradnice sa v dvoch for cykloch (riadok, stĺpec) skontroluje,​ či sa neprekryje nový segment s vysvietenou časťou (čiže predchádzajúce segmenty, prípadne ich zvyšky). Ak dojde ku kolízií pole ''​int dispArray[8][16]''​ sa vynuluje a začína nová hra. Ak nenastane kolízia, segment sa na určitu dobu zapíše to tohoto poľa a tým sa vysvieti. Od tejto súradnice sa v dvoch for cykloch (riadok, stĺpec) skontroluje,​ či sa neprekryje nový segment s vysvietenou časťou (čiže predchádzajúce segmenty, prípadne ich zvyšky). Ak dojde ku kolízií pole ''​int dispArray[8][16]''​ sa vynuluje a začína nová hra. Ak nenastane kolízia, segment sa na určitu dobu zapíše to tohoto poľa a tým sa vysvieti.
  
-V tomto momente sa začína inkrementovať premenná counter. Vždy keď je counter násobkom 4000, testuje sa návratová hodnota z funkcie pre obsluhu akcelerometra. Podľa návratovej hodnoty z funkcie obsluhujúcej akcelerometer sa rozhodne:+V tomto momente sa začína inkrementovať premenná counter. Vždy keď je counter násobkom 4000, testuje sa návratová hodnota z funkcie pre obsluhu akcelerometra, pričom plne dostačujúce sú hodnoty z osí x a y. Podľa návratovej hodnoty z funkcie obsluhujúcej akcelerometer sa rozhodne:
   * či sa má segment pohnúť v pravo - realizované náklonom dosky do prava   * či sa má segment pohnúť v pravo - realizované náklonom dosky do prava
   * či sa má segment pohnúť v ľavo - realizované náklonom dosky do ľava   * či sa má segment pohnúť v ľavo - realizované náklonom dosky do ľava
Řádek 144: Řádek 144:
  
 ---- ----
 +=== Zoznam všetkých funkcií ===
 +podrobnejšie sú tieto funkcie, tak ako celý firmware popísané[[http://​developer.mbed.org/​users/​lamaking/​code/​Tet_-r-is/​|tu]]
 +<code cpp>
 +// prototypy funkcii
 +short RandSegment(void); ​                                           //funkcia nahodne vybera novy segment pomocou citania A/D vstupu
 +void SegmentInit(void); ​                                            //​prida jednotlivym segmentom informacie o ich vlastnostiach - pocet riadkov, stlpcov, rotovany segment, priradi pole s vlastnostou farby
 +void SegmentCopy(struct segments *psgm, int segmentIn[2][4]); ​      //v SegmentInit skopiruje vytvorene pole segmentu do pola v strukture (struct segments)
 +void MoveDown(int array[8][16],​ int line); ​                         //posun pola smerom dole po odstranení zaplneneho riadku
 +void LineCheck(void); ​                                              //​funkcia kontroluje zaplneny riadok
 +void SegmentMove(struct segments *psgm); ​                           //funkcia sa stara o pohyby segmentu
 +void WriteClrSeg(int wrtEnab, struct segments *psgm); ​              //​zmazanie alebo zapis segmentu pri pohybe maticou
 +int DecLvl(void); ​                                                  //​obsluha akcelerometra ​ (preco prave Dec som zabudol)
 +void LineAdd(int line); ​                                            //​adresacia riadkov
 +void Display(void); ​                                                //​rozsvecovanie farieb v riadkoch podla hlavnej matice
 +void OutPortInit(void); ​                                            //​nastavenie portov do pociatocneho stavu - vypnutie/​zhasnutie
 +</​code>​
 +
 +----
 +
  
 ===== Video ===== ===== Video =====
Řádek 154: Řádek 173:
 Zadaním bolo realizovať hru Tetris pomocou FRDM-KL25Z a RG LED matice 8x8 s využitím farebnosti matice. Ovládanie bolo realizované pomocou akcelerometra. Zadaním bolo realizovať hru Tetris pomocou FRDM-KL25Z a RG LED matice 8x8 s využitím farebnosti matice. Ovládanie bolo realizované pomocou akcelerometra.
  
-Zadanie sa podarilo splniť v plnom rozsahu. Program bol odladený od drobných chýb takže hra je plne hrateľná, odskúšaná a relatívne náročná na ovládanie, čo jej prídáva na atraktivite. Drobnosti ako skóre, zvyšovanie rýchlosti po dosiahnutí určitej úrovne a podobne neboli pridané. Jednak je matica relatívne malá, takže už po pár segmentoch môže byť pole plne obsadené a ovládanie je už beztak dostatočne náročné, takže nízke skóre skôr odradí. Zato je hra vybavená random generátorom,​ takže ​hra je o to viac zaujímavejšia.+Zadanie sa podarilo splniť v plnom rozsahu. Program bol odladený od drobných chýb takže hra je plne hrateľná, odskúšaná a relatívne náročná na ovládanie, čo jej prídáva na atraktivite. Drobnosti ako skóre, zvyšovanie rýchlosti po dosiahnutí určitej úrovne a podobne neboli pridané. Jednak je matica relatívne malá, takže už po pár segmentoch môže byť pole plne obsadené a ovládanie je už beztak dostatočne náročné, takže nízke skóre skôr odradí. Zato je hra vybavená random generátorom,​ takže je o to viac zaujímavejšia.
  
-Malou nevýhodou je, že ak je pri pohybe ​do vodorovnej polohy ​s doskou jemne buchnuté, môže akcelerometer zaznamenať vyššiu hodnotu v opačnej ​osi (viz video 0:20). Riešenie je jednoduché:​ stačí mať hru vždy vo vzduchu.+Malou nevýhodou je, že ak je pri pohybe s doskou jemne buchnuté, môže akcelerometer zaznamenať vyššiu hodnotu v niektorej ​osi (viz video 0:20), najpravdepodobnejšie v tej, kde je najväčší náklon. Riešenie je jednoduché:​ stačí mať hru vždy vo vzduchu.
2014/led-tetris.1421593790.txt.gz · Poslední úprava: 2015/01/18 16:09 autor: Matej Hojdík