Přednášky (které vede Michal Krumnikl) a další pomocné materiály naleznete na: http://tamz2.mrl.cz/
Cvičení
Během semestru budou na cvičeních zadávány úkoly, které budou hodnoceny osobně na cvičeních. Za body z těchto úkolů bude možné získat zápočet (max. 45; min. 23). V hodnocení úkolů bude také zohledněno prezentovování vlastního řešení a pochopení problematiky.Pokud se nemůžete osobně dostavit na cvičení a odprezentovat úkol, zašlete mi prosím své řešení e-mailem. Následně mi ho ukážete osobně na našem dalším společném cvičení.
- Android Studio, instalace zalozeni projektu, emulator
- Zakladni komponenty/ui prvky
- Složený úrok (0-3b)
- Vytvoření aplikace, která bude počítat složené úročení - viz ukázka aplikace níže (daň z úroku neuvažujeme). Poskytnutá ukázka slouží jako inspirace. Výslednou podobu a strukturu aplikace si navrhněte podle vlastní kreativity.
- Matematický základ lze čerpat například z: https://www2.karlin.mff.cuni.cz/~portal/fin_mat/?page=slozene_uroceni
- Jetpack Compose - Graf je možné vytvořit pomocí například:
- AAY-chart: AAY-chart
- Vico: Vico Chart
- Java/Kotlin + XML - Graf je možné vytvořit například pomocí MPAndroidChart: MPAndroidChart
- Dokumentace k MPAndroidChart: MPAndroidChart wiki
- Přidání navigace mezi více obrazovkami (např. pomocí menu s možností volby: "typ grafu" "nastavení").
- V položce "typ grafu": výběr alespoň dvou různých grafů.
- V položce "nastavení" umožněte měnit parametry, např. velikost kroku posuvníků, rozsah posuvníků barvu grafu.
- Můžete se pokusit přidat vliv daně (případně inflace): https://www2.karlin.mff.cuni.cz/~portal/fin_mat/?page=vliv_inf_dane
- Můžete se pokusit přidat také volbu pravidelného vkladu (viz video ukázka).
4. Rozšíření předchozího úkolu: (0-5b)
Cvičení bude hodnoceno podle množství a obtížnosti přidaných prvků oproti předchozímu cvičení. Možné je například přidat tyto části (můžete přidat i jiné):5. Implementace vlastního Composable/View pro generování čárového kódu: (0-5b)
Vytvořte vlastní Composable/View implementující zobrazení jednoduchého čárového kódu - UPC. Nosičem informace v kódu UPC-A jsou čáry a mezery. Mohou mít různou šířku, která je ale vždy násobkem šířky nejužšího elementu. Šířka nejužšího elementu představuje základní délkovou jednotku. Každý zakódovaný znak má v symbolu čárového kódu délku přesně 7 základních jednotek. Kódování jednotlivých cifer najdete v přiloženém zdrojovém souboru projektu. Kód je uprostřed rozdělen dělicím znakem na dvě části (na ukázce níže zvýrazněn červeně). První pole je vlevo od dělicího znaku, druhé pole je vpravo. Princip kódování můžete nalézt na Wikipedii
Při tvorbě aplikace se pokuste vyřešit (pro plný počet bodů) i následující body:- Možnost zadání 12-místného číselného kódu uživatelem prostřednictvím textového pole. Po stisknutí tlačítka se zadaný kód vykreslí.
- Vykreslování UPC-A čárového kódu se pokuste vyřešit pomocí bitového posunu v kombinaci s proměnnými L a R poskytnutými v ukázkové šabloně.
- Kontrola správnosti kódu pomocí poslední kontrolní číslice (check digit) UPC–A Check Digit Calculator
- Využití ML Kit: Google code scanner API pro čtení kódů (aktivace např. na tlačítko) ml-kit barcode-scanning
- Můžete se pokusit také o uložení vygenerovaného čárového kódu jako obrázek do galerie.
6. Sokoban: (0-5b)
Sokoban (skladník) je logická hra, ve které hráč posouvá bedny v bludišti a snaží se je umístit na vyznačené pozice. Bludiště je 2D mapa znázorňující rozmístění Sokobana, beden, zdí a vyznačených pozic. Není možné posouvat více beden naráz, vždy pouze jednu v daném okamžiku. Dále není možné za sebou bednu táhnout.
Pro splnění úkolu je potřeba vyřešit všechny správné pohyby hráče a beden po hracím poli. Šablona (Compose) Šablona (Java/Kotlin + XML) Pro odchycení dotyků můžete využít: Compose: pointerInput pointerInput Java/Kotlin + XML: onTouchEvent onTouchEvent Herní grafika:
Screenshot ukázkového příkladu:
7. Sokoban - pokračování: (0-6b)
Cvičení bude hodnoceno podle množství a obtížnosti přidaných prvků oproti předchozímu cvičení. Možné je například přidat tyto části:- Práce s více levely. Po splnění aktuálního levelu se automaticky přepne na level následující.
- Načítání herních levelů ze souborů. Umístění souborů je na vás - můžete použít např. assets složku. Odkaz na levely: Sokoban Levels (vysvětlení symbolů) Compose ukázka assets složky: .png .txt (starší přístup) Java/Kotlin + XML ukázka assets složky: .png .txt
- Načítání více levelů ze souborů. Pokuste se o automatický parser formátu levelu z výše uvedeného odkazu + podpora různě velkých levelů.
- Ukládat nejlepší skóre ke každému levelu do úložiště (např. počet tahů, čas).
- Výběr levelů pomocí listu se seznamem levelů (v Compose např. pomocí LazyColumn, v XML např. přes RecyclerView / ListView) – viz ukázka.
- Ukládání rozehraného levelu.
- Zobrazit náhled levelu - viz ukázka - jedná se o automaticky (programově) generovaný náhled levelu - ne pouze například manuálně (vytípnutý) vložený obrázek do adresáře drawable/assets.
- Jednoduchý editor levelů.
