Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2014:arkanoid-game

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:arkanoid-game [2015/01/18 22:52]
Jindřich Šindelář [Demonstrační video]
2014:arkanoid-game [2015/01/18 23:41] (aktuální)
Jindřich Šindelář [Závěr]
Řádek 7: Řádek 7:
 Cílem hry je tedy odpalování míčku pomocí pálky směrem do pole cihel v horní části obrazovky tak, aby byly všechny cihly zničeny. Cílem hry je tedy odpalování míčku pomocí pálky směrem do pole cihel v horní části obrazovky tak, aby byly všechny cihly zničeny.
 ----- -----
 +=====Úvod=====
 +Následující text je dokumentací projektu zabývajícího se vývojem klonu [[http://​en.wikipedia.org/​wiki/​Arkanoid|Arkanoidu]] ovládaného akcelerometrem vestavěným na vývojovém kitu [[http://​www.freescale.com/​webapp/​sps/​site/​prod_summary.jsp?​code=FRDM-KL25Z|FRDM KL25Z]]. Obsahuje popis hardware i jednotlivých funkcí firmware, které jsou popsány buď slovně, nebo příslušnými úseky kódu. Autor nepovažuje použití vývojových diagramů pro popis projektu tohoto charakteru za nezbytné. Je zde uveden také odkaz na [[http://​developer.mbed.org/​users/​JSindelar/​code/​Arkanoid_v1/​|repozitář projektu]] obsahující veškeré potřebné soubory včetně použitých knihoven. V závěru je přiloženo krátké video pro demonstraci funkce.
 +------
 =====Hardware===== =====Hardware=====
 Původním zamýšleným displejem byl displej [[http://​www.dx.com/​p/​2-8-tft-lcd-touch-shield-module-for-arduino-silver-blue-black-223437|ITDB02]]. Vzhledem k nesnázím s oživením displeje, které si autor nejprve odůvodňoval rozdíly v dokumentaci samotného shieldu a řídícího obvodu pro displej (viz {{www.veskys.com/​Instrucuction Manual/​0113052614572399.zip|archiv s dokumentací}}) byl po dohodě s vyučujícím zvolen [[http://​www.gme.cz/​lcd-display-graficky-128x64-atm12864d-fl-ybw-p513-118|monochromatický displej s rozlišením 128x64]]. Při oživování tohoto displeje a konzultaci s kolegy bylo zjištěno, že problém se nachází na kitu [[http://​www.freescale.com/​webapp/​sps/​site/​prod_summary.jsp?​code=FRDM-KL25Z|FRDM KL25Z]] - když byly pro přenos dat a řídících signálů do displeje použity vnější řady pinů na konektorech J2 a J1 (kromě těch, které nemohou být použity jako GPIO, viz [[http://​elmicro.com/​files/​freescale/​frdm-kl25z_pinouts_rev_1_0.pdf|pinout]]),​ displej nezobrazoval správně. Tyto vnější řady pinů byly defaultně použity také při pokusech s prvním displejem (logicky vzhledem k jeho pinoutu), chyba tedy mohla být způsobena kitem [[http://​www.freescale.com/​webapp/​sps/​site/​prod_summary.jsp?​code=FRDM-KL25Z|FRDM KL25Z]] a nikoliv [[http://​www.dx.com/​p/​2-8-tft-lcd-touch-shield-module-for-arduino-silver-blue-black-223437|ITDB02 shieldem]]. Původním zamýšleným displejem byl displej [[http://​www.dx.com/​p/​2-8-tft-lcd-touch-shield-module-for-arduino-silver-blue-black-223437|ITDB02]]. Vzhledem k nesnázím s oživením displeje, které si autor nejprve odůvodňoval rozdíly v dokumentaci samotného shieldu a řídícího obvodu pro displej (viz {{www.veskys.com/​Instrucuction Manual/​0113052614572399.zip|archiv s dokumentací}}) byl po dohodě s vyučujícím zvolen [[http://​www.gme.cz/​lcd-display-graficky-128x64-atm12864d-fl-ybw-p513-118|monochromatický displej s rozlišením 128x64]]. Při oživování tohoto displeje a konzultaci s kolegy bylo zjištěno, že problém se nachází na kitu [[http://​www.freescale.com/​webapp/​sps/​site/​prod_summary.jsp?​code=FRDM-KL25Z|FRDM KL25Z]] - když byly pro přenos dat a řídících signálů do displeje použity vnější řady pinů na konektorech J2 a J1 (kromě těch, které nemohou být použity jako GPIO, viz [[http://​elmicro.com/​files/​freescale/​frdm-kl25z_pinouts_rev_1_0.pdf|pinout]]),​ displej nezobrazoval správně. Tyto vnější řady pinů byly defaultně použity také při pokusech s prvním displejem (logicky vzhledem k jeho pinoutu), chyba tedy mohla být způsobena kitem [[http://​www.freescale.com/​webapp/​sps/​site/​prod_summary.jsp?​code=FRDM-KL25Z|FRDM KL25Z]] a nikoliv [[http://​www.dx.com/​p/​2-8-tft-lcd-touch-shield-module-for-arduino-silver-blue-black-223437|ITDB02 shieldem]].
Řádek 22: Řádek 25:
  
 =====Firmware===== =====Firmware=====
-Firmware byl psán v prostředí [[http://​developer.mbed.org/​|mbed.org]]. Pro komunikaci s displejem byla využita knihovna [[http://​developer.mbed.org/​users/​DimiterK/​code/​KS0108/​|KS0108]]. Z časových důvodů není kód rozdělen do více souborů, všse nachází v souboru ''​main.cpp'',​ který lze nalézt v [[http://​developer.mbed.org/​users/​JSindelar/​code/​Arkanoid_v1/​|repozitáři projektu]]. Ze stejných důvodů obsahuje hra pouze jednu úroveň, funkce ale byly psány tak, aby bylo možné jednoduše přidat další úrovně.+Firmware byl psán v prostředí [[http://​developer.mbed.org/​|mbed.org]]. Pro komunikaci s displejem byla využita knihovna [[http://​developer.mbed.org/​users/​DimiterK/​code/​KS0108/​|KS0108]]. Z časových důvodů není kód rozdělen do více souborů, všechny funkce ​se nachází v souboru ''​main.cpp'',​ který lze nalézt v [[http://​developer.mbed.org/​users/​JSindelar/​code/​Arkanoid_v1/​|repozitáři projektu]]. Ze stejných důvodů obsahuje hra pouze jednu úroveň, funkce ale byly psány tak, aby bylo možné jednoduše přidat další úrovně.
  
 V následujícím textu budou popsány jednotlivé používané funkce. V následujícím textu budou popsány jednotlivé používané funkce.
Řádek 73: Řádek 76:
 ====funkce DrawBricks()==== ====funkce DrawBricks()====
 Funkce ''​DrawBricks()''​ dle obsahu polí ''​column[]'',​ ''​row[]''​ a ''​BrickExists[]''​ naplněných předchozí funkcí vykresluje matici cihel. Parametry cihel, které jsou pro všechny stejné (šířka, výška) jsou dány konstantami překladače ''​BrickW'',​ ''​BrickH''​. Původně bylo zamýšleno použít místo 3 samostatných polí jedno pole struktur o 3 položkách,​ přístup do položek struktur v tomto poli ve funkci volané z ''​main''​u se však zdál příliš komplikovaný. Funkce ''​DrawBricks()''​ dle obsahu polí ''​column[]'',​ ''​row[]''​ a ''​BrickExists[]''​ naplněných předchozí funkcí vykresluje matici cihel. Parametry cihel, které jsou pro všechny stejné (šířka, výška) jsou dány konstantami překladače ''​BrickW'',​ ''​BrickH''​. Původně bylo zamýšleno použít místo 3 samostatných polí jedno pole struktur o 3 položkách,​ přístup do položek struktur v tomto poli ve funkci volané z ''​main''​u se však zdál příliš komplikovaný.
 +-----
 +{{ 2014:​arkanoid-game:​arkanoid_screen.png?​550 }}
 +Takto vypadá displej po vykreslení loga, tabulky s nulovým skóre a 3 zbývajícími životy, ohraničení herní plochy, matice cihel, pálky a míčku ve výchozí pozici.
 +
 ----- -----
 ====Funkce reset()==== ====Funkce reset()====
Řádek 199: Řádek 206:
  
 =====Demonstrační video===== =====Demonstrační video=====
-{{youtube>​GC-csz9e6Wk?​large}}+{{ youtube>​GC-csz9e6Wk?​large }}
  
 V první části videa je hra úspěšně dohrána, po restartu je záměrně prohrána pro demonstraci chování v obou případech. V první části videa je hra úspěšně dohrána, po restartu je záměrně prohrána pro demonstraci chování v obou případech.
 ----- -----
 =====Závěr===== =====Závěr=====
-V rámci tohoto projektu byl vyvinut klon hry [[http://​en.wikipedia.org/​wiki/​Arkanoid|Arkanoid]] ovládaný akcelerometrem vývojového kitu [[http://​www.freescale.com/​webapp/​sps/​site/​prod_summary.jsp?​code=FRDM-KL25Z|FRDM KL25Z]]. Hra zatím obsahuje pouze jednu úroveň včetně počítání ​skóre a zbývajících pokusů ​a je plně funkč.+V rámci tohoto projektu byl vyvinut klon hry [[http://​en.wikipedia.org/​wiki/​Arkanoid|Arkanoid]] ovládaný akcelerometrem vývojového kitu [[http://​www.freescale.com/​webapp/​sps/​site/​prod_summary.jsp?​code=FRDM-KL25Z|FRDM KL25Z]]. Hra zatím obsahuje pouze jednu úroveň, funkce ​však byly psány tak, aby rozšíření ​ o další úrovně nebylo příliš pracné. Hra je plně funkční a zobrazuje také informace o skóre a počtu  ​zbývajících pokusů. Kompletní kód včetně použitých knihoven lze nalézt v [[http://​developer.mbed.org/​users/​JSindelar/​code/​Arkanoid_v1/​|repozitáři projektu]].
2014/arkanoid-game.1421617950.txt.gz · Poslední úprava: 2015/01/18 22:52 autor: Jindřich Šindelář